2011-01-18 12 views
0

私の目標は:ユーザーはファイル(* mp3のみ)を選択し、それを2回クリックしてから再生する必要があります(ファイルへのQStringをplay()関数に送る必要があります) まず、 QTreeViewでは、ファイルが選択されたときに信号があります。QFileDialogをウィジェットとして使用

私はQFileDialogを作成し、MainWindowに組み込まれたウィジェットとして使用することにしました。 唯一の問題は、ダブルクリックすると消えてしまうことです。それを避けることは可能ですか?

いくつかのQDialog :: finished()シグナルまたはQDialog :: done()を使用して作業する必要がありますか?

+0

QDialogをウィジェットとして埋め込むと、実際には面倒なUIになります。 QTreeView :: doubleClicked(const QModelIndex&)(QAbstractItemViewから継承されています)があり、必要な処理を行うだけです。 –

答えて

3

まず、QTreeViewからダブルクリック信号を得ることができます。それはです:

void doubleClicked(const QModelIndex & index); 

第二に、あなたが本当にQFileDialogをそのよう、最初のオーバーライドcloseEvent(QCloseEvent *イベント)を使用する場合。内部で、ダイアログを閉じるには、event-> accept();を実行します。それ以外の場合は、event-> ignore();を実行します。 QFileDialog :: currentChanged(const QString &パス)に接続します。ユーザーがダブルクリックするファイル名を取得します。最後に、スタック(ローカル)ではなく、ヒープ上にQFileDialogを作成し、exec()ではなくshow()を呼び出してください。

親(これ)を指定できるので、後で削除する必要はありません。

1
connect(file_dialog, SIGNAL(finished(int)), file_dialog, SLOT(open())); 

これはうまくいくようです。ジオメトリは固定されたままで、最後のパスはすべて正しいと覚えています。

関連する問題