过滤搜索框QT返回的文件

时间:2014-07-21 14:42:53

标签: c++ qt

QString search = ui->searchComboBox->currentText();
if(search.isEmpty()){
    search = "*";
}

files = currentDirectory.entryList(QStringList(search),
    QDir::Files | QDir::NoSymLinks);

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

例如,如果我搜索的目录中有一个名为'don300.png'的文件并且我搜索'don',我就没有结果。

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

1 个答案:

答案 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".