QTableWidget 常用配置和增加、修改、删除操作

1.常用配置项

    QStringList header;

    header << tr("colum1") << tr("colum2");

    ui->tableWidget->setColumnCount(2);//设置列数

    ui->tableWidget->resizeColumnsToContents();//列宽自适应

ui->tableWidget->setHorizontalHeaderLabels(header);//横向表头

    ui->tableWidget->verticalHeader()->setVisible(false);//隐藏列表头

    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//不可编辑

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//尾列自适应窗口

ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//按行选择


2.表格数据添加

        ui->tableWidget->clearContents();//清空表格数据(表头保留)

        ui->tableWidget->setRowCount(verMap.keys().count());//根据数据内容,设置行数

        QMap<QString,QString>::const_iterator it = verMap.constBegin();

        while(it != verMap.constEnd())//填充每行表格数据内容

        {

            ui->tableWidget->setItem(row,0,new QTableWidgetItem(it.key()));

            ui->tableWidget->setItem(row++,1,new QTableWidgetItem(it.value()));

            it++;

        }

//界面优化配置

        ui->tableWidget->resizeColumnsToContents();//根据内容调整表格

        ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//拉长最后一列


3.表格数据删除

void MainWindow::on_actionDel_triggered()

{

    int row = ui->tableWidget->currentRow();

    if(row < 0)

    {

        QMessageBox::warning(this,QStringLiteral("告警"),QStringLiteral("请先选中要删除的项!"));

        return ;

    }

 

    ui->tableWidget->removeRow(row);

}


4.表格数据遍历

    for(int row = 0; row < ui->tableWidget->rowCount(); row++)

    {

        QString col_0 = ui->tableWidget->item(row,0)->text().trimmed();

        QString col_1= ui->tableWidget->item(row,1)->text().trimmed();

        //数据处理……;

    }


5.表格列选择性隐藏

    m_headerMenu = new QMenu(this);

    ui->actionHide1->setObjectName("0");

    m_headerMenu->addAction(ui->actionHide1);

    connect(ui->actionHide1SIGNAL(toggled(bool)), thisSLOT(slotActionChecked(bool)));

 

void MainWindow::slotActionChecked(bool checked)

{

    QAction *act = static_cast<QAction*>(sender());

    int col = act->objectName().toInt();

    ui->tableWidget->setColumnHidden(col,!checked);

}

bool MainWindow::eventFilter(QObject *obj, QEvent *ev)

{

    if (obj == ui->tableWidget->horizontalHeader()){

        if (ev->type() == QEvent::ContextMenu){

            QContextMenuEvent *menuEvent = static_cast<QContextMenuEvent *>(ev);

            m_headerMenu->popup(menuEvent->globalPos());

            return true;

        }

        else{

            return false;

        }

    }

    else{

        return eventFilter(obj, ev);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值