QFileDialog用于具有特定内容的目录

时间:2010-07-20 10:11:40

标签: qt qtreeview qfiledialog

我想构建一个类似于QFileDialog::getExistingDirectory()的对话框,当所选目录包含某些文件时,只启用OK按钮。

我知道我无法通过QFileDialog实现此目标,相反,我必须提出自己的QDialog,QTreeViewQFileSystemModel相关联。

  1. 如何将QTreeView限制为目录?
  2. 如何获取当前选定的目录,以便检查其是否包含某些文件名?

1 个答案:

答案 0 :(得分:3)

  1. 在QFileSystemModel上使用setFilter和QDir :: AllDirs或QDir :: Dirs选项,可能是前者。
  2. 将树视图中的activated(QModelIndex)信号连接到您自己的自定义插槽。在此插槽中,将QModelIndex传递给模型的fileInfo / filePath方法,以检索所选目录的信息/路径,然后执行检查
  3. 以下是一个例子:

    void slotDirectorySelected( const QModelIndex & index )
    {
        QFileInfo info = fileSystemModel->fileInfo( index );
        QDir selectedDir = info.dir();
        foreach( const QString entry, selectedDir.entryList() ) {
            // do something with the entry
        }
    }