使用通配符搜索QTableWidget时出现问题
Issue when searching QTableWidget using wildcards
在我的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
但是,如果您只想测试字符串是否包含子字符串,我建议使用速度更快的boolQString::contains(const QString &str, Qt::CaseSensitivity cs)
。
示例2:
QString line = "aaaaLINEbbbb";
QString searchWord = "LINE";
line.contains(searchWord); //should return true
参见:
- QRegExp
- QRegExp::模式语法
- 通配符匹配
- QString::包含
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 使用通配符搜索QTableWidget时出现问题
- 问题与QTableWidget右键单击事件
- 在QTableWidget中嵌入QComboBox时出现问题