qt create 查询tableview 单元格是否有指定字符串,将查询结果保存下来
时间: 2023-12-14 19:36:38 浏览: 87
你可以通过以下步骤来实现:
1. 在Qt中创建一个QTableView控件,并在其模型中填充数据。
2. 使用QStandardItemModel的findItems()函数查询指定字符串,并将结果保存在一个QList<QStandardItem*>中。
3. 遍历QList<QStandardItem*>,找到匹配的行号和列号,并将它们保存在一个QVector<int>中。
4. 将QVector<int>中的行号和列号保存在一个QMap<int, int>中,其中键为行号,值为列号。
下面是一份示例代码:
```
QTableView *tableView = new QTableView(this);
QStandardItemModel *model = new QStandardItemModel(this);
// 在模型中填充数据
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 5; col++) {
QString text = QString("row %1, col %2").arg(row).arg(col);
model->setItem(row, col, new QStandardItem(text));
}
}
// 查询指定字符串
QString searchString = "row 5";
QList<QStandardItem*> items = model->findItems(searchString, Qt::MatchContains);
// 遍历查询结果
QVector<int> rows;
QMap<int, int> matches;
foreach (QStandardItem *item, items) {
int row = item->row();
int col = item->column();
rows << row;
matches[row] = col;
}
// 输出查询结果
qDebug() << "Matching rows:" << rows;
qDebug() << "Matches:" << matches;
```
在上面的代码中,我们首先创建了一个QTableView控件和一个QStandardItemModel模型,并在其中填充了一些数据。然后,我们使用模型的findItems()函数查询包含指定字符串的单元格,并将结果保存在一个QList<QStandardItem*>中。接下来,我们遍历查询结果,找到匹配的行号和列号,并将它们保存在一个QMap<int, int>中。最后,我们输出了查询结果,以便进行调试和验证。
阅读全文