gpt4 book ai didi

c++ - 过滤搜索框QT返回的文件

转载 作者:行者123 更新时间:2023-11-28 06:46:44 25 4
gpt4 key购买 nike

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);

仅供引用:

    Search pattern    Results    *                 Any file.    don*              Files that begin with "don".    *don*             Files that contain "don".

关于c++ - 过滤搜索框QT返回的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867963/

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