QFileDialog用作小部件

时间:2011-01-18 00:49:16

标签: qt qfiledialog

我的目标是:用户可以选择文件(只有* mp3),点击两次后就可以播放(所以QString to file应该发送到play()函数) 首先,我开始使用QTreeView,但是在选择文件时它会发出信号。

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

我应该使用一些QDialog :: finished()信号,还是QDialog :: done()?

2 个答案:

答案 0 :(得分:3)

首先,您可以从QTreeView获得双击信号;它是:

void doubleClicked( const QModelIndex & index );

其次,如果你真的想以这种方式使用QFileDialog,首先要覆盖closeEvent(QCloseEvent * event)。在里面,如果要关闭对话框,请执行event-> accept();否则只需执行event-> ignore();.连接到QFileDialog :: currentChanged(const QString& path);获取用户双击的文件名。最后一件事 - 确保在堆上创建QFileDialog(使用new),而不是在堆栈(本地)上创建,并在其上调用show()而不是exec()。

请记住,您可以使用父级(此)提供它,您不需要在以后删除它。

答案 1 :(得分:1)

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

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