作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些代码,每当在不同的 ListView 中单击新类别时,它就会显示与类别关联的目录的内容。为方便起见,我想提供一个过滤器选项,它只显示与给定字符串输入匹配的目录内容。
我让所有这些都正常工作,但是每当我将过滤器应用于一个类别然后切换到另一个类别时都会出现错误。过滤器已正确应用于我目前正在查看的类别。但是当我尝试单击另一个类别时,每个类别的每个文件列表都显示为空。此错误仅在我应用过滤器时发生,当我在未使用过滤器的情况下切换类别时不会发生此错误。
我想,“没关系,我会在每个类别更改之间删除过滤器。”所以我尝试了:
if (filemodel->nameFilters().size() > 0)
{
// create an empty list of strings to pass to the filter.
QListString clearFilter;
filemodel->setNameFilters(clearFilter);
fileView->setModel(filemodel);
}
if (filemodel->nameFilters().size() > 0)
{
// throw away the old filemodel and start over with a fresh one.
delete filemodel;
filemodel = new QFileSystemModel;
filemodel->setFilter(QDir::Files);
filemodel->setRootPath("/");
fileView->setModel(filemodel);
}
filemodel
并从头开始一个新的。这个问题有更好的解决方案吗?
MainWindow::MainWindow(...)
{
// ... skipping a bunch of stuff
fileView = new QListView(this);
filemodel = new QFileSystemModel;
filemodel->setFilter(QDir::Files);
filemodel->setRootPath("/");
fileView->setModel(filemodel);
filterText = new QLineEdit(this);
doFilter = new QPushButton(this);
doFilter->setText("Filter Filenames");
connect(doFilter, SIGNAL(clicked(bool)), this, SLOT(filterFileView()));
// ... skipping a bunch of other stuff
}
void MainWindow::filterFileView()
{
QStringList filterToApply;
filterToApply.append("*" + filterText->text() + "*");
filemodel->setNameFilters(filterToApply);
filemodel->setNameFilterDisables(false);
fileView->setModel(filemodel);
}
最佳答案
将过滤器重置为“*”对我有用。
QStringList filters;
filters << "*";
filemodel->setNameFilters(filters);
关于c++ - 如何从 QFileSystemModel 中清除 setNameFilters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196467/
setNameFilters 没有按我的预期工作,所以如果有人能解释我是否使用不正确,或者这可能是 Qt 中的错误: 这是我的代码示例: QDir export_folder("C:\path");
我正在编写一些代码,每当在不同的 ListView 中单击新类别时,它就会显示与类别关联的目录的内容。为方便起见,我想提供一个过滤器选项,它只显示与给定字符串输入匹配的目录内容。 我让所有这些都正常工
(Windows 7 64 位、PyCharm 3.4.1 专业版、Python 3.4.0、PySide 1.2.2) 我想制作一个带有过滤器的文件对话框并预选一个过滤器。 如果我使用静态方法,它会
我是一名优秀的程序员,十分优秀!