gpt4 book ai didi

c++ - 使用通配符搜索 QTableWidget 时出现问题

转载 作者:行者123 更新时间:2023-11-28 04:56:48 28 4
gpt4 key购买 nike

在我的 Qt C++ 应用程序中,我在 qtablewidget 中有几个项目。我使用 QLineEdit 和一个按钮来搜索 QTableWidget,当给行编辑一个特定的词并单击搜索按钮时。以下是我的代码:

bool found=false;
QString Line= ui->search->text();

for(int i=0;i<100;i++){
if(ui->tableWidget->item(i,0)->text()== Line){
found = true;
break;
}
}
if(found){
ui->tableWidget->clear();
ui->tableWidget->setItem(0,0,new QTableWidgetItem(Line));
}
else{
QMessageBox::warning(this, tr("Application Name"), tr("The word you are searching does not exist!") );
}

如果在表格小部件中给出了一个确切的单词,但如果我使用,则此代码有效

ui->tableWidget->item(i,0)->text()=="%"+ Line+"%";

它不适用于通配符场景,因此我什至可以搜索给出的单词的一部分。我该如何纠正这个问题?

最佳答案

== 运算符比较两个字符串,如果它们完全相等则返回 true。如果你想使用通配符,我建议使用 QRegExp 并使用 QRegExp::Wildcard 作为模式语法。

示例 1:

QString line = "aaaaLINEbbbb";
QRegExp rx("*LINE*");
rx.setPatternSyntax(QRegExp::Wildcard);
rx.exactMatch(line); //should return true

但是,如果您只想测试字符串是否包含子字符串,我建议使用 bool QString::contains(const QString &str, Qt::CaseSensitivity cs) 可以更快。

示例 2:

QString line = "aaaaLINEbbbb";
QString searchWord = "LINE";
line.contains(searchWord); //should return true

参见:

关于c++ - 使用通配符搜索 QTableWidget 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968450/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com