0

我目前正在测试为 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"

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

问候唐尼

4

1 回答 1

0

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

dialog.setDefaultSuffix(QString());

然后不会自动将任何内容附加到文件的末尾。我没有方便的 Mac 来测试这个,但它应该可以工作。

于 2012-05-03T16:06:01.517 回答