簡體   English   中英

QFileDialog::getOpenFileName 不會在 Mac OS 10.8 Mountain Lion 上設置初始目錄

[英]QFileDialog::getOpenFileName doesn't set the initial directory on Mac OS 10.8 Mountain Lion

我無法使用 Qt 4.8 使用 QFileDialog 更改當前目錄。 相同的代碼在 Windows 和 Mac OS 10.6 Snow Leopard 上運行良好。 如果我不使用本機 Mac OS X 對話框,它也可以正常工作。

這有效:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop",QString(),0,QFileDialog::DontUseNativeDialog);

這不起作用:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop");

看起來如果大多數時候它打開最后一次調用 getOpenFileName 的最后一個路徑。

在 Mavericks 上使用 Qt5.2.0 遇到了同樣的問題......我找到了一個解決方法:將一個虛擬文件名附加到您要選擇的目錄中。 但是,請確保不要在 Windows 上執行此操作,因為用戶會看到它。

QString dir = "/Users/myuser/Desktop";
#if defined(__APPLE__)
dir += "/MyFile.txt";
#endif
fn = QFileDialog::getOpenFileName(this, "Select File", dir);

此外,對於像我這樣實例化文件對話框的人,因為他們需要更多選項,您還可以執行以下操作:

QFileDialog fileDialog(this, "Select File");
#if defined(__APPLE__)
fileDialog.selectFile(dir + "/MyFile.txt");
#else
fileDialog.setDirectory(dir);
#endif
...

這是 Qt 中的一個錯誤,據報道已在 Qt 5.0.1 和 Qt 4.8.4 中修復(盡管人們(包括我自己)似乎仍然可以在 4.8.4 中重現它)。

這個錯誤在 JIRA 中被報告為QTBUG-20771QTBUG-28161和最后的QTBUG-35779 (這似乎最終完全解決了 Qt 5.2.1 中的問題)。 這是Gerrit 中補丁的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM