Qt文件对话框无法在Mac OS上的沙箱中打开

时间:2012-11-29 16:15:48

标签: macos file qt sandbox

我有一个在Qt开发的Mac OS应用程序。我使用以下代码启动打开并保存文件对话框:

//opening
QString fileName = QFileDialog::getOpenFileName(this,
    tr("Open"), "", tr("*.ext"));

//saving
QString fileName = QFileDialog::getSaveFileName(this,
    tr("Save"), "filename", tr("*.ext"));

当应用程序没有沙盒时,代码可以正常工作。但是,当我在沙盒上将其分发到Mac App Store上时,代码无效。该应用程序只是暂停了一会儿。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

这篇文章应该有用http://www.digia.com/en/Blogs/Qt-blog/Pasi_Matilainen/Dates/2012/4/How-to-Publish-Qt-Applications-in-the-Mac-App-Store/

tldr;

您需要使用Qt 4.8.1发布到Mac App Store

  

在沙盒中使用文件保存对话框

     

文件保存对话框需要非空的默认文件名才能工作   正确地在沙箱内。您可以提供默认文件名   保存对话框如下:

QString fileSavePath = QFileDialog::getSaveFileName(this, "Save file", "default filename");
     

或者如果您自己创建对话框实例:

QFileDialog *fileSaveDialog = new QFileDialog(this);
fileSaveDialog->setAcceptMode(QFileDialog::AcceptSave);
fileSaveDialog->selectFile("default filename");
     

文件打开对话框不需要任何特殊设置即可正常工作。

但我认为你应该阅读整篇文章,这样你就不会错过任何东西

答案 1 :(得分:0)

在沙盒中,您必须使用NSOpenPanelNSSavePanel才能获取不同文件或目录的权限。

看看Powerbox and File System Access Outside of Your Container