0

我的目标是:用户可以选择文件(仅限 *mp3),然后单击两次它应该播放(所以文件的 QString 应该发送到 play() 函数) 首先我开始使用 QTreeView,但它有信号文件被选中。

所以我决定创建 QFileDialog 并将其用作 MainWindow 中内置的小部件。我唯一的问题是双击后它消失了。有可能避免吗?

我应该使用一些 QDialog::finished() 信号还是 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 ); 获取用户双击的文件名。最后一件事——确保在堆上创建 QFileDialog(使用 new),而不是在堆栈上(本地),并在其上调用 show() 而不是 exec()。

请记住,您可以将其与父级(this)一起提供,以后无需将其删除。

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

这似乎工作正常。几何形状保持固定,它会记住最后一条路径。

于 2011-08-09T08:56:26.010 回答