我尝试创建“另存为...”对话框在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狮子。
在此先感谢您的帮助。
再论什么是对未来游客的意见,以下行提出“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
我搜索谷歌的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”
希望帮助
QString dir = QDir::homePath();
QString name = "test.txt";
QFileDialog::getSaveFileName(nullptr, tr("save file"), dir + "/" + name, tr("TXT (*.txt)"));
如果将“目录”的说法,而dir是“文件”(存在与否),在Windows中,您将有默认的名称。
在当前的QT版本(5.x的),您可以用参数设置您的参访文件名directory
中QFileDialog.getSaveFileName()
函数调用:
QFileDialog.getSaveFileName( directory = 'prefferedFileName.txt' )
文档: http://doc.qt.io/qt-5/qfiledialog.html#getSaveFileName