2

QFileDialog :: getExistingDirectory()に似たダイアログを作成したいのですが、選択したディレクトリに特定のファイルが含まれている場合にのみ[OK]ボタンが有効になります。

QFileDialogではこれを達成できないことはわかっていますが、代わりに、 QFileSystemModelに結合されたQTreeViewを持つ独自のQDialogを考え出す必要があります。

  1. QTreeViewをディレクトリに制限するにはどうすればよいですか?
  2. 現在選択されているディレクトリを取得して、ファイル名が含まれているかどうかを確認するにはどうすればよいですか?
4

1 に答える 1

3
  1. QDir ::AllDirsまたはQDir::Dirsオプション(おそらく前者)のいずれかを使用して、QFileSystemModelでsetFilterを使用します。
  2. ツリービューからのactivate(QModelIndex)シグナルを自分のカスタムスロットに接続します。このスロットで、QModelIndexをモデルのfileInfo / filePathメソッドに渡し、選択したディレクトリの情報/パスを取得してから、チェックを実行します

次に例を示します。

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
    }
}
于 2010-07-20T14:31:53.250 に答える