QFileDialog используется в качестве виджета - PullRequest
0 голосов
/ 18 января 2011

Моя цель: пользователь может выбрать файл (только * mp3) и после двойного щелчка по нему он должен воспроизвести (поэтому файл QString в файл должен быть отправлен в функцию play ()) Сначала я начал работать с QTreeView, но онимеет сигнал при выборе файла.

Поэтому я решил создать QFileDialog и использовать его как встроенный виджет в MainWindow.Единственная проблема, которая у меня возникает, это то, что после двойного щелчка она исчезает.Можно этого избежать?

Должен ли я работать с некоторым сигналом QDialog :: finish () или, QDialog :: done ()?

Ответы [ 2 ]

3 голосов
/ 18 января 2011

Во-первых, вы можете получить сигнал двойного щелчка от QTreeView;это:

void doubleClicked( const QModelIndex & index );

Во-вторых, если вы действительно хотите использовать QFileDialog таким образом, сначала переопределите closeEvent (событие QCloseEvent *).Внутри, если вы хотите закрыть диалог, выполните event-> accept (); в противном случае просто выполните event-> ignore () ;.Соединиться с QFileDialog :: currentChanged (const QString & path);чтобы получить имя файла, пользователь дважды щелкает.И последнее: обязательно создайте QFileDialog в куче (используя new), а не в стеке (локальном), и вызовите show () для него вместо exec ().

Помните, что выможете предоставить его родителю (это), и вам не нужно будет удалять его позже.

1 голос
/ 09 августа 2011
connect(file_dialog, SIGNAL(finished(int)), file_dialog, SLOT(open()));

Кажется, это работает нормально. Геометрия остается неизменной, и она хорошо помнит последний путь ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...