如何在 MacOS 下使用 QFileDialog::getSaveFileName(...)
Posted
技术标签:
【中文标题】如何在 MacOS 下使用 QFileDialog::getSaveFileName(...)【英文标题】:How to use QFileDialog::getSaveFileName(...) under MacOS 【发布时间】:2012-05-03 09:50:56 【问题描述】:我目前正在测试为 MacOS X.6 下的 windows 编写的软件。大多数东西已经有效,但目前我坚持一件事: Mac 下原生的 SaveFileName Dialog。
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中没有输入扩展名,过滤器中的第一个扩展名就被用作扩展名,这很烦人。 我怎样才能解决这个问题? 我尝试通过将 getSaveFileName() 方法中的最后一个参数更改为“DontUseNativeDialog”来使用 NonNativeSaveDialog,这非常有效,但看起来不太好。 有什么建议吗?
你好,唐尼
【问题讨论】:
【参考方案1】:您可以使用非静态 QFileDialog 方法自己构建对话框。为此请关注QFileDialog docs,然后查看QFileDialog::setDefaultSuffix(),您可以将其设置为空字符串,如下所示:
dialog.setDefaultSuffix(QString());
然后不会自动将任何内容附加到文件的末尾。我没有方便的 Mac 来测试这个,但它应该可以工作。
【讨论】:
以上是关于如何在 MacOS 下使用 QFileDialog::getSaveFileName(...)的主要内容,如果未能解决你的问题,请参考以下文章
如何在pyside中为QtGui.QFileDialog.getOpenFileName定义一个QDir?
如何在 Qt Designer 中创建一个打开 QFileDialog 的信号?