qt create 指定列逐行查询字符,使用findItem隐藏没有搜索到的行
时间: 2024-02-28 07:52:47 浏览: 114
逐行筛选掉含指定字符的行
感谢您的追问。如果您想在Qt Creator中指定某个列进行逐行查询,并使用`findItem`函数隐藏没有搜索到的行,可以按照以下步骤操作:
1. 在Qt Creator中打开您想要进行逐行查询的文件。
2. 在文件中添加一个`QTableWidget`控件,用于显示表格数据。
3. 在代码中,使用`setColumnCount`函数设置表格的列数,并使用`setHorizontalHeaderLabels`函数设置表格每一列的列头。
4. 使用`setRowCount`函数设置表格的行数,并使用`setItem`函数为每一个单元格设置数据。
5. 在代码中使用`findItems`函数逐行查询指定列中是否存在目标字符。
6. 如果未查询到目标字符,使用`setRowHidden`函数将该行隐藏起来。
下面是一个简单的示例代码,供您参考:
``` c++
// 设置表格的列数和列头
tableWidget->setColumnCount(3);
tableWidget->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("Age") << tr("Gender"));
// 设置表格的行数和单元格数据
tableWidget->setRowCount(4);
tableWidget->setItem(0, 0, new QTableWidgetItem("Tom"));
tableWidget->setItem(0, 1, new QTableWidgetItem("18"));
tableWidget->setItem(0, 2, new QTableWidgetItem("Male"));
tableWidget->setItem(1, 0, new QTableWidgetItem("Lucy"));
tableWidget->setItem(1, 1, new QTableWidgetItem("20"));
tableWidget->setItem(1, 2, new QTableWidgetItem("Female"));
tableWidget->setItem(2, 0, new QTableWidgetItem("Jim"));
tableWidget->setItem(2, 1, new QTableWidgetItem("22"));
tableWidget->setItem(2, 2, new QTableWidgetItem("Male"));
tableWidget->setItem(3, 0, new QTableWidgetItem("Mary"));
tableWidget->setItem(3, 1, new QTableWidgetItem("19"));
tableWidget->setItem(3, 2, new QTableWidgetItem("Female"));
// 查询指定列中是否存在目标字符,并隐藏未匹配到的行
QString target = "Lucy";
int column = 0;
for (int row = 0; row < tableWidget->rowCount(); ++row) {
QString text = tableWidget->item(row, column)->text();
QList<QTableWidgetItem*> items = tableWidget->findItems(target, Qt::MatchContains);
if (items.isEmpty()) {
tableWidget->setRowHidden(row, true);
}
}
```
希望以上步骤和示例代码能够帮助到您。如果您还有其他问题,请随时提出。
阅读全文