QString search = ui->searchComboBox->currentText();
if(search.isEmpty()){
search = "*";
}
files = currentDirectory.entryList(QStringList(search),
QDir::Files | QDir::NoSymLinks);
此代码在QString
搜索为空时返回文件。
但是,当我在searchComboBox
中输入任何文字时,没有结果。
例如,如果我搜索的目录中有一个名为'don300.png'的文件并且我搜索'don',我就没有结果。
在尝试在文件名中的任何位置搜索字符串时,不确定它是如何工作的?
答案 0 :(得分:1)
没有通配符的搜索模式将执行完全匹配。在您的情况下,如果文本框不为空,则它仅与完全相同的名称匹配。只需将您的代码更改为:
QString search = ui->searchComboBox->currentText() + "*";
files = currentDirectory.entryList(QStringList(search),
QDir::Files | QDir::NoSymLinks);
如果searchComboBox
为空,则搜索将为*
,如果您提供过滤器,则搜索模式将为(例如)don*
(匹配所有< em>使用don
开始。
一般情况下,您可能希望更自由地匹配文本,以便您可以使用它:
QString search = ui->searchComboBox->currentText();
if(search.isEmpty()) {
search = "*";
} else {
search = "*" + search + "*";
}
files = currentDirectory.entryList(QStringList(search),
QDir::Files | QDir::NoSymLinks);
仅供参考:
Search pattern Results * Any file. don* Files that begin with "don". *don* Files that contain "don".