QFileDialog:如何在“另存为...”对话框中设置默认文件名

时间:2013-03-14 17:36:42

标签: macos qt4 qfiledialog

我尝试在Mac OS X中创建“另存为...”对话框。但我不想使用QFileDialog::getSaveFileName()函数,因为此函数创建的对话框 NOT 在Mac OS X Lion中真正原生。所以我决定创建对话框QFileDialog对象:

auto export_dialog( new QFileDialog( main_window ) );
export_dialog->setWindowModality( Qt::WindowModal );
export_dialog->setFileMode( QFileDialog::AnyFile );
export_dialog->setAcceptMode( QFileDialog::AcceptSave );

一切正常,除了一个问题。我无法为保存的文件设置默认名称,因此用户每次都必须手动输入此名称。我知道函数QFileDialog::getSaveFileName()允许通过第三个参数 dir http://qt-project.org/doc/qt-4.8/qfiledialog.html#getSaveFileName)设置默认文件名。但是如何在没有此功能的情况下设置此默认名称?

我可以通过QFileDialog::setDefaultSuffix()函数为保存的文件设置默认后缀,但我需要设置整个默认名称,而不仅是默认后缀。

我尝试使用QFileDialog::setDirectory()函数,但它只设置了保存目录,没有保存文件的名称。

我在Mac OS X Lion上使用Qt 4.8.1。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

重新对未来访问者的评论中的内容,以下行将“myFileName”作为QFileDialog中的默认名称:

export_dialog->selectFile("myFileName");

讨论:http://www.qtcentre.org/threads/49434-QFileDialog-set-default-name?highlight=QFileDialog

不太有用的文档:http://qt-project.org/doc/qt-4.8/qfiledialog.html#selectFile

答案 1 :(得分:5)

我搜索了谷歌搜索set default filename qfiledialog并发生了这次讨论。

我发现只有文件确实存在才能使用 selectFile("myFileName"); 。就我而言,目的是创建一个新文件,并选择覆盖现有文件。

对我有用的解决方案(Qt 5.3.2)如下:

QFileDialog svDlg;

QString saveFileName = svDlg.getSaveFileName(this, caption, preferredName, filter);

在上面的示例中,preferredName是一个包含" C:/pre-selected-name.txt"

的QString

希望有所帮助

答案 2 :(得分:0)

使用当前的QT版本(5.x),您可以在QFileDialog.getSaveFileName()函数调用中使用参数directory设置您带有优先级的文件名:

QFileDialog.getSaveFileName( directory = 'prefferedFileName.txt' )

docs:http://doc.qt.io/qt-5/qfiledialog.html#getSaveFileName