我的沙盒应用程序中的QFileDialog抛出deny file-read-xattr错误

时间:2016-02-23 11:27:44

标签: macos qt appstore-sandbox

由于我在 Qt 应用程序上启用了沙箱,因此在使用 QFileDialog 导航时,控制台中有很多日志消息:

23/02/2016 12:25:51,000 kernel[0]: Sandbox: Joker(87965) deny file-read-xattr /Users/martin/Documents/a.txt
23/02/2016 12:25:51,000 kernel[0]: Sandbox: Joker(87965) deny file-read-xattr /Users/martin/Documents/b.txt
23/02/2016 12:25:52,000 kernel[0]: Sandbox: Joker(87965) deny file-read-xattr /Users/martin/Documents/c.txt

有没有办法避免这种情况?

1 个答案:

答案 0 :(得分:1)

正如here所述,

  

文件保存对话框需要非空的默认文件名才能在沙箱中正常工作。您可以按如下方式为保存对话框提供默认文件名:

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

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

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

您可能还应该使用自定义info.plist并插入键ForAppStore,其值为yes

要使用自定义plist进行构建,请创建该文件并在.pro中引用它,如下所示: -

QMAKE_INFO_PLIST = Info.plist