我尝试在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。
提前感谢您的帮助。
答案 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' )