QTreeView中的一种文件格式

QTreeView中的一种文件格式,qt,qt4,qtreeview,qtreewidget,Qt,Qt4,Qtreeview,Qtreewidget,是否可以只设置一种用户可见的文件格式? 我正在文档中搜索,但找不到它。。。 如果没有,您建议使用哪个其他小部件?我假设您使用的是QFileSystemModel的QTreeView。如果没有,我建议这样做。QTreeWidget没有那么灵活 QFileSystemModel有一个名为setNameFilters的方法,它应该做您想要做的事情。要使用它,请执行以下操作: QStringList filters; filters.append("*.cc"); // whatever filters

是否可以只设置一种用户可见的文件格式? 我正在文档中搜索,但找不到它。。。
如果没有,您建议使用哪个其他小部件?

我假设您使用的是QFileSystemModel的QTreeView。如果没有,我建议这样做。QTreeWidget没有那么灵活

QFileSystemModel有一个名为
setNameFilters
的方法,它应该做您想要做的事情。要使用它,请执行以下操作:

QStringList filters;
filters.append("*.cc"); // whatever filters you want
filters.append("*.h");

QFileSystemModel *model = new QFileSystemModel;
model->setNameFilters(filters);

QTreeView *view = new QTreeView;
view->setModel(model);
//仅针对目录和torrent文件筛选treeview
QStringList滤波器;
过滤器设置只读(true);
模型->设置排序(QDir::DirsFirst | QDir::IgnoreCase | QDir::Type);
模型->设置过滤器(QDir::AllDirs | QDir::AllEntries | QDir::NodeAndDotDot);
模型->设置名称过滤器(过滤器);
ui->treeView->setModel(模型);

谢谢!我试过了,但我只能看到…C目录,然后是一个子目录,然后是一个孙子目录,仅此而已。我想再试一次,但是我没有太多的和,对于我的项目来说,QFileDialog将在主窗口中用作小部件,因为它有fileSelected()信号。(目标是选择文件并将QString发送给播放音乐的函数)。但是在我选择QFileDialog之后,它就消失了。您知道如何将其设置为never dissaper吗?我认为您无法使标准QFileDialog在不重新编写(分类)它的情况下永远关闭。您可以监视它的
完成时间
并立即重新显示,但这可能会导致一些闪烁。您可以从QFileSystemModel中获取QItemSelectionModel,以告知选择何时更改(以及选择内容)。这将是更多的工作,但我认为如果你能让QFileSystemModel发挥作用,你会对结果更满意。请在你的答案中添加一些解释。
//filter treeview for directories and torrent files only

QStringList filters;
filters << "*.torrent";

QDirModel model = new QDirModel(this);
model->setReadOnly(true);
model->setSorting(QDir::DirsFirst |QDir::IgnoreCase | QDir::Type);
model->setFilter(QDir::AllDirs | QDir::AllEntries |QDir::NoDotAndDotDot);

model->setNameFilters(filters);
ui->treeView->setModel(model);