如何在MacOS下使用QFileDialog :: getSaveFileName(...)

时间:2012-05-03 09:50:56

标签: macos qt qdialog

我目前正在测试MacOS X.6下为Windows编写的软件。而且大多数东西已经有效了,但是目前我还是坚持了一件事: Mac下的本机SaveFileName对话框。

QString fileName = m_sSaveAsDir + "untitled." + m_sFileExtension;
qDebug() << "File Extension:" << m_sFileExtension; //"jpg"
qDebug() << "SaveDir:" << m_sSaveAsDir; //""
qDebug() << "Filename:" << fileName; //Filename: "untitled.jpg"
fileName = QFileDialog::getSaveFileName( 0, tr( "Save As" ), 
           fileName, tr("Images (*.dng *.tif *.jpg)"), 0, 0 );
qDebug() << "Filename:" << fileName; //Filename: "//...../Pictures/untitled.dng"

很明显,在MacOs中忽略了前扩展jpg,因此不会显示也不会保存。哪个对我好。 此外,Qt手册说,在MacOS下,过滤器被忽略。如果我在SaveDialog中查看浏览器中的文件夹(文件未被过滤),这是正确的。但似乎只要在filedialog中没有输入扩展名,过滤器中的第一个扩展名就会用作扩展名,这非常烦人。 我怎么能解决这个问题呢? 我尝试通过将getSaveFileName()方法中的最后一个参数更改为“DontUseNativeDialog”来使用NonNativeSaveDialog,这几乎可以工作,但看起来并不好。 有什么建议吗?

问候唐尼

1 个答案:

答案 0 :(得分:0)

您可以使用非静态QFileDialog方法自行构建对话框。请关注QFileDialog docs,然后查看QFileDialog::setDefaultSuffix(),您可以将其设置为空字符串,如下所示:

dialog.setDefaultSuffix(QString());

然后什么都不会自动附加到文件的末尾。我不会用Mac来测试它,但它应该可以工作。