0

我有一个用 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 上分发时,代码不起作用。该应用程序只是冻结了一会儿。有什么帮助吗?

4

2 回答 2

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");

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

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

于 2012-11-30T11:25:00.977 回答
0

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

看看Powerbox 和容器外的文件系统访问

于 2012-11-29T16:26:48.967 回答