如何在qtablewidget中获取字符串的行号

时间:2018-03-20 12:28:29

标签: c++ qt

我正在使用Qt 5.4.0并创建了一个QTableWidget。该表有几行和几列。

在我的应用程序中,我想搜索该表中的字符串,如果该字符串存在,我想知道行号。

我在qt 5.4.0文档中找不到任何这样的api。

有没有人理解这种api或类似于我正在寻找的东西。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以使用模型的match()方法:

for (int col=0; col<tableWidget->columnCount(); col++){
    // return a list of all matching results
    QModelIndexList results = tableWidget->model()->match(
        tableWidget->model()->index(0, col),
        Qt::DisplayRole,
        "yourstring",
        -1,
        Qt::MatchContains
    );
    // for each result, print the line number
    for (QModelIndex idx : results)
        qDebug() << idx.row();
}

答案 1 :(得分:1)

您可以使用findItems method

QString searchtext = "text";
QList<QTableWidgetItem *> items = ui->tableWidget->findItems(searchtext, Qt::MatchExactly);
for(int i=0; i<items.count(); i++)
{
    int row = items.at(i)->row();
    //...
}

请注意,您可以将额外参数传递给findItems,以设置一个或多个match flags