2012-11-29 37 views
0

我有一個在Qt中開發的Mac OS應用程序。我使用以下代碼啓動打開並保存文件對話框: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時,代碼不起作用。該應用程序只是暫時凍結。任何幫助?

+0

你使用的是什麼版本的Qt? –

+0

我下載了最新的Mac版QtSDK 1.2.1的脫機版。當我安裝它時,在About屏幕上說,Qt Creator 2.4.1基於Qt 4.7.4(64位)。 – Mika

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

文件打開的對話框不需要任何特殊的設置工作正確。

但我認爲你應該閱讀整篇文章,所以你不會錯過任何東西

+0

是的,我已經閱讀了整篇文章。 – Mika

+0

所以你可能沒有使用Qt 4.8.1。已經有事件Qt 4.8.3。更新您的框架 –

+0

當我使用SDK進行更新時,它表示所有組件都是最新的,但編譯器仍然是4.8.1。我認爲這是一個錯誤,我必須手動更新? – Mika