【QT常用技术讲解】QTablewidget单元格存储隐藏的数据
前言
QTablewidget表格不仅可以显式的展示数据,也能把数据隐藏在单元格中。
场景
从数据库中读取数据并展示到QTablewidget表格时,有些值(比如数据库的自增ID、UUID等)不适合展示到单元格中,但有时对数据库操作必备的关键值,把此关键隐藏在单元格中是高效的解决方案。
功能讲解
存储隐藏数据
// 创建表格
QTableWidget *table = new QTableWidget(5, 3, this);// 添加数据并存储隐藏值
for (int row = 0; row < 5; ++row) {for (int col = 0; col < 3; ++col) {QTableWidgetItem *item = new QTableWidgetItem(QString("Cell %1-%2").arg(row).arg(col));// 存储隐藏数据(使用 Qt::UserRole)item->setData(Qt::UserRole, row * 100 + col); // 存储整数// 或者存储字符串item->setData(Qt::UserRole + 1, QString("HiddenData-%1").arg(row * col));table->setItem(row, col, item);}
}
注意以上样例是每个单元格都存储了数据,如果只存储一个,可以If(row==0)来限制。
读取隐藏数据
QTableWidgetItem *selectedItem = table->currentItem();
if (selectedItem) {int hiddenInt = selectedItem->data(Qt::UserRole).toInt();QString hiddenStr = selectedItem->data(Qt::UserRole + 1).toString();qDebug() << "Hidden integer:" << hiddenInt;qDebug() << "Hidden string:" << hiddenStr;
}
以上是从指定的单元格中读取隐藏数据。