我正在使用以下过滤器设置QFileSystemModel:

QDir::Filters( Dirs|AllDirs|Files|Drives|NoDotAndDotDot|AllEntries )

在代理模型中,我使用正则表达式按名称过滤文件:
proxy_model_->setFilterRegExp(".*\\.(cpp$|cxx$|c$|hpp$|h$)");

....然后在我的model_是QFileSystemModel的地方,我有一行:
model_->setNameFilters(QStringList(proxy->filterRegExp().pattern()));

...显示的文件显示为灰色。为什么以及如何使它们“正常”。

最佳答案

QFileSystemModel使用的“名称过滤器”没有得到很好的记录。但是我将假定它们的格式可能与QFileDialog在其setNameFilter中使用的格式相同:

http://doc.qt.nokia.com/stable/qfiledialog.html#setNameFilter

如果是这样,则这些不是正则表达式。它们是文本的奇数格式,后跟括号,其中包含命令行终端样式的通配符。

所以我想这会起作用:

model_->setNameFilters(
    QStringList("Supported files (*.cpp *.cxx *.c *.hpp *.h)"));

通常,除非文档或函数名称另有说明,否则我将谨慎地假设将过滤器用作QString的位置将知道由正则表达式构成的内容!

关于c++ - QFileSystemModel中的文件为灰色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8457401/

10-09 22:00