Qt下QTableWidget的使用

本文主要内容: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按字段值排序无论身处何处,只要有一颗放松而美好的心态,生活便是美好!

Qt下QTableWidget的使用

相关文章:

你感兴趣的文章:

标签云: