14

Qtでフォルダブラウザダイアログを開く方法はありますか? ファイルモードで使用するQFileDialogと、オプションを指定しても標準のファイルダイアログが表示されます。ユーザーにディレクトリ ツリーからディレクトリを選択するように求めるダイアログを使用したいと思います。DirectoryShowDirsOnly

私が使用しているPySideコードは次のとおりです。

from PySide import QtGui
app = QtGui.QApplication([])
dialog = QtGui.QFileDialog()
dialog.setFileMode(QtGui.QFileDialog.Directory)
dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
dialog.exec_()

そして、これが私がWindows 7で得た結果です: ファイル選択ダイアログ

4

4 に答える 4

12

setFileMode()電話をかける順番がsetOption()重要なようです。setFileMode()最初に電話していることを確認してください。

QFileDialog dialog;
dialog.setFileMode(QFileDialog::Directory);
dialog.setOption(QFileDialog::ShowDirsOnly);
...
于 2012-11-08T23:07:57.187 に答える
5

私の答えは少しトリッキーで、ちょっとしたハックのように見えますが、ネイティブ ダイアログを使用QFileDialogするような静的メソッドであるgetExistingDirectory()ため、限られたカスタマイズしかできないことはわかっています。

ただし、QFileDialogインスタンスを作成すると、カスタマイズ可能なダイアログが表示されます (ライブ ダイアログをいじって満足している限り)。

たとえば、これは選択できる展開可能なディレクトリを含むツリー ビューを表示する必要があります (このコードを PySide に移植しても問題ないはずです)。

QFileDialog *fd = new QFileDialog;
QTreeView *tree = fd->findChild <QTreeView*>();
tree->setRootIsDecorated(true);
tree->setItemsExpandable(true);
fd->setFileMode(QFileDialog::Directory);
fd->setOption(QFileDialog::ShowDirsOnly);
fd->setViewMode(QFileDialog::Detail);
int result = fd->exec();
QString directory;
if (result)
{
    directory = fd->selectedFiles()[0];
    qDebug()<<directory;
}

ここからその方法を手に入れました

于 2012-11-09T09:16:50.727 に答える
3

これは私のために働いた:

def getDir(self):
    dialog = QtGui.QFileDialog()
    dialog.setFileMode(QtGui.QFileDialog.Directory)
    dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
    directory = dialog.getExistingDirectory(self, 'Choose Directory', os.path.curdir)
于 2014-11-19T21:43:21.317 に答える
3

次のコード行を試してみてください。フォルダー参照ダイアログが表示されます。

 ui->txtSaveAddress->setText(folderDlg.getExistingDirectory(0,"Caption",QString(),QFileDialog::ShowDirsOnly));

ここに画像の説明を入力

于 2013-05-29T09:19:17.513 に答える