本文主要内容:1、QTableWidget的基本设置ui->tableWidget->setColumnCount(11);ui->tableWidget->setRowCount(NumOfReg);/* 设置 tableWidget */ui);ui->tableWidget->verticalHeader()->setVisible(false); // 隐藏水平headerui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems); // 单个选中ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); // 可以选中多个
效果图:
2、设置QTableWidget的某些字段不可编辑和背景颜色
设置tableWidget下某些字段可以编辑,某些字段不可以编辑的方法:
void QTableWidget::setItem(int row, int column, QTableWidgetItem * item)
Sets the item for the given row and column to item.
来看一下Qt::ItemFlags有哪些类型:
看到上面的几个函数,就知道了可以通过设置item,然后设置单元格的属性。
每个单元格都要拥有一个自己的item,不能共用。
设置QTableWidget的背景颜色: 可以设置 QTableWidgetItem 的颜色:
当然这里你也可以使用下面这个函数,但这在Qt5.4的文档里是不建议使用(deprecated)的:
/* 设置 Id Name 字段的值不能修改 *//* 设置不可修改的Id Name两列的背景颜色为灰色 */for(int i = 0; i < NumOfReg; i++) {QTableWidgetItem *item = new QTableWidgetItem();item->setBackground(QBrush(QColor(Qt::lightGray)));item->setFlags(item->flags() & (~Qt::ItemIsEditable));ui->tableWidget->setItem(i, 0, item);}for(int i = 0; i < NumOfReg; i++) {QTableWidgetItem *item = new QTableWidgetItem();item->setBackground(QBrush(QColor(Qt::lightGray)));item->setFlags(item->flags() & (~Qt::ItemIsEditable));ui->tableWidget->setItem(i, 1, item);}
效果图:
3、QTableWidget单元格的插入
下面的代码中,regInfo是指针数组,创建了5个RegisterInfo类的对象,并填充了默认字段。然后把这些字段值插入到相应的单元格中。
regInfo[0] = new RegisterInfo(0x00, QString(“Target motor”), 255, 0, QString(“U8”), QString(“RW”), false);regInfo[1] = new RegisterInfo(0x01, QString(“Flags”), U32_MAX, 0, QString(“U32”), QString(“R”), false);regInfo[2] = new RegisterInfo(0x02, QString(“Status”), U8_MAX, 0, QString(“U8”), QString(“R”), false);regInfo[3] = new RegisterInfo(0x03, QString(“Control mode”), U8_MAX, 0, QString(“U8”), QString(“RW”), false);regInfo[4] = new RegisterInfo(0x04, QString(“Speed reference”), 4000, -4000, QString(“S32”), QString(“R”), false);for(int i = 0; i < ui->tableWidget->rowCount(); i++) {ui->tableWidget->item(i, 0)->setText(QString::number(regInfo[i]->getId(), 10));ui->tableWidget->item(i, 1)->setText(regInfo[i]->getName());}for(int i = 0; i < ui->tableWidget->rowCount(); i++) {QTableWidgetItem *item_max = new QTableWidgetItem();item_max->setText(QString::number(regInfo[i]->getMax()));item_max->setBackground(QBrush(QColor(Qt::lightGray)));item_max->setFlags(item_max->flags() & (~Qt::ItemIsEditable));ui->tableWidget->setItem(i, 5, item_max);QTableWidgetItem *item_min = new QTableWidgetItem();item_min->setText(QString::number(regInfo[i]->getMin()));item_min->setBackground(QBrush(QColor(Qt::lightGray)));item_min->setFlags(item_min->flags() & (~Qt::ItemIsEditable));ui->tableWidget->setItem(i, 4, item_min);QTableWidgetItem *item_type = new QTableWidgetItem();item_type->setText(regInfo[i]->getType());item_type->setBackground(QBrush(QColor(Qt::lightGray)));item_type->setFlags(item_type->flags() & (~Qt::ItemIsEditable));ui->tableWidget->setItem(i, 6, item_type);QTableWidgetItem *item_mode = new QTableWidgetItem();item_mode->setText(regInfo[i]->getMode());item_mode->setBackground(QBrush(QColor(Qt::lightGray)));item_mode->setFlags(item_mode->flags() & (~Qt::ItemIsEditable));ui->tableWidget->setItem(i, 7, item_mode);}
效果图:
4、QTableWidget按字段值排序无论身处何处,只要有一颗放松而美好的心态,生活便是美好!