我有一個繼承自QFileDialog
的類。在構造函數中,我調用setDirectory
並傳入訪問的最後一個目錄(該類跟蹤該目錄;請參閱下面的代碼)。在Windows上,這工作正常。如果我多次顯示對話框,它內部具有足夠的智能,可以在最後一個位置恢復(例如,用戶之前保存文件的位置)。這是所需的行爲。Qt QFileDialog :: setDirectory在Ubuntu中的有趣行爲12.04
另一方面,在Ubuntu 12.04(GCC 4.8編譯器)上,如果我多次撥打showFileDialog
,系統不會自動恢復最後一次離開的位置。所以我嘗試在該函數中添加setDirectory
調用,如下所述,但這並沒有改變任何內容。此外,如果我從構造函數中取出setDirectory
,所以它只在showFileDialog
中調用,文件對話框打開到運行程序的文件夾。 (即setDirectory不起作用)。隨後調用showFileDialog
將打開一個文件對話框,從請求的目錄開始。
因此,看起來呼叫的效果有所延遲。這是一個Qt錯誤,還是我的?無論哪種方式,我怎樣才能讓setDirectory
電話有效?
示例代碼:
QString FileDialog::defaultDir = QDir::homePath();
FileDialog::FileDialog(QWidget *parentWindow /*, ...*/)
: QFileDialog(parentWindow)
{
setDirectory(defaultDir);
//...
}
QString FileDialog::showFileDialog()
{
// Adding setDirectory(defaultDir) here doesn't help.
if(!exec())
{
return QString::null;
}
defaultDir = directory().path();
//...
}
本機對話框可能有限制。嘗試使用'DontUseNativeDialog'選項。 –
我忘了提及:我確實驗證了DontUseNativeDialog使它工作正常,但我更願意使用本機對話框來保持Ubuntu的感覺。 –