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->actionHide1, SIGNAL(toggled(bool)), this, SLOT(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);
}
}