0

私の目標は、ユーザーがファイルを選択でき(* mp3のみ)、それを2回クリックすると再生されるはずです(したがって、ファイルへのQStringをplay()関数に送信する必要があります)最初にQTreeViewで作業を開始しましたが、ファイルが選択されます。

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

QDialog :: finish()シグナル、またはQDialog :: done()を使用する必要がありますか?

4

2 に答える 2

3

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

void doubleClicked( const QModelIndex & index );

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

親 (this) を指定できるので、後で削除する必要がないことに注意してください。

于 2011-01-18T20:42:14.277 に答える
1
connect(file_dialog, SIGNAL(finished(int)), file_dialog, SLOT(open()));

これはうまくいくようです。ジオメトリは固定されたままで、最後のパスを記憶しています。

于 2011-08-09T08:56:26.010 に答える