关于#qt#的问题:请问qt里用了TableWidget,怎么在表里按类别查询
https://blog.csdn.net/NMarshal/article/details/127559269
你可以看看这个
不知道你这个问题是否已经解决, 如果还没有解决的话://获取TableWidget中的复选框状态
Qt::CheckState MainWindow::getCheckBoxCurrState_InTableWidget(QTableWidget *tableWidget, int x, int y)
{
QWidget *widget = tableWidget->cellWidget(x,y);
QHBoxLayout *layout = qobject_cast<QHBoxLayout *>(widget->layout());
QCheckBox *checkBox = qobject_cast<QCheckBox *>(layout->itemAt(0)->widget());
return checkBox->checkState();
}
问题提到的是在使用Qt中的TableWidget时,想要实现按照特定类别查询表中的数据。根据参考资料中的信息,我可以通过以下步骤来实现这个功能:
int rowCount = 5; // 设置表格的行数
int columnCount = 3; // 设置表格的列数
ui->tableWidget->setRowCount(rowCount);
ui->tableWidget->setColumnCount(columnCount);
QStringList columnLabels; // 设置列标题名称
columnLabels << "类别" << "名称" << "数值";
ui->tableWidget->setHorizontalHeaderLabels(columnLabels);
QStringList rowLabels; // 设置行标题名称
rowLabels << "1" << "2" << "3" << "4" << "5";
ui->tableWidget->setVerticalHeaderLabels(rowLabels);
setItem()
方法设置表中单元格的数据。 QString category = "类别1"; // 要查询的类别
QString name = "数据1";
QString value = "100";
for (int row = 0; row < rowCount; row++) {
QTableWidgetItem *categoryItem = new QTableWidgetItem(category);
ui->tableWidget->setItem(row, 0, categoryItem);
QTableWidgetItem *nameItem = new QTableWidgetItem(name);
ui->tableWidget->setItem(row, 1, nameItem);
QTableWidgetItem *valueItem = new QTableWidgetItem(value);
ui->tableWidget->setItem(row, 2, valueItem);
}
item()
方法获取指定行列的单元格对象,再通过text()
方法获取数据。 QString searchCategory = "类别1"; // 要查询的类别
QString searchData;
for (int row = 0; row < rowCount; row++) {
QTableWidgetItem *categoryItem = ui->tableWidget->item(row, 0);
if (categoryItem->text() == searchCategory) {
QTableWidgetItem *nameItem = ui->tableWidget->item(row, 1);
QTableWidgetItem *valueItem = ui->tableWidget->item(row, 2);
searchData += "名称:" + nameItem->text() + ",数值:" + valueItem->text() + "\n";
}
}
// 输出查询结果
qDebug() << searchData;
以上就是实现按照特定类别查询TableWidget中的数据的方法。请注意替换相关的变量名和具体数据,以适应你的实际场景。如果还有其他问题或需要进一步帮助,请告诉我。