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

2019-08-17 14:20发布

我尝试创建“另存为...”对话框在Mac OS X,但我不希望使用QFileDialog::getSaveFileName()函数,因为该函数建立对话框在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()函数,但它只能设置目录下保存,保存不用的文件名。

我使用Qt 4.8.1在Mac OS X狮子。

在此先感谢您的帮助。

Answer 1:

再论什么是对未来游客的意见,以下行提出“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



Answer 2:

我搜索谷歌的set default filename qfiledialog和整个讨论发生。

我发现,使用selectFile("myFileName"); 如果该文件确实存在才有效。 在我的情况,目的是创建一个新的文件,覆盖现有文件的选项。

这对我(的Qt 5.3.2)工作的解决方案如下:

QFileDialog svDlg;

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

在上述例子中,preferredName是包含为QString“C:/pre-selected-name.txt”

希望帮助



Answer 3:

QString dir = QDir::homePath();
QString name = "test.txt";

QFileDialog::getSaveFileName(nullptr, tr("save file"), dir + "/" + name, tr("TXT (*.txt)"));

如果将“目录”的说法,而dir是“文件”(存在与否),在Windows中,您将有默认的名称。



Answer 4:

在当前的QT版本(5.x的),您可以用参数设置您的参访文件名directoryQFileDialog.getSaveFileName()函数调用:

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

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



文章来源: QFileDialog: how to set default filename in “Save as…” dialog