筛选搜索框 QT 返回的文件

Filtering files returned by search box QT

本文关键字:文件 返回 QT 搜索 筛选      更新时间:2023-10-16
QString search = ui->searchComboBox->currentText();
if(search.isEmpty()){
    search = "*";
}
files = currentDirectory.entryList(QStringList(search),
    QDir::Files | QDir::NoSymLinks);

此代码在QString搜索为空时返回文件。但是,当我在searchComboBox中输入任何文本时,没有结果。

例如,如果我搜索的目录中有一个名为"don300.png"的文件,并且我搜索"don",则不会得到任何结果。

不确定在文件名中的任何位置搜索字符串时它是如何工作的?

没有通配符的搜索模式将执行完全匹配。在您的情况下,如果文本框不为空,则它仅与该名称完全匹配。只需将您的代码更改为:

QString search = ui->searchComboBox->currentText() + "*";
files = currentDirectory.entryList(QStringList(search),
    QDir::Files | QDir::NoSymLinks);

如果searchComboBox为空,则将*搜索,如果您提供过滤器,则搜索模式将(例如(don*(匹配以 don 开头的所有文件(。

通常,您可能希望更自由地匹配文本,因此您可以使用以下内容:

QString search = ui->searchComboBox->currentText();
if(search.isEmpty()) {
    search = "*";
} else {
    search = "*" + search + "*";
}
files = currentDirectory.entryList(QStringList(search),
    QDir::Files | QDir::NoSymLinks);

仅供参考:

    搜索模式结果    * 任何文件。    don* 以"don"开头的文件。    *don* 包含"don"的文件。