簡體   English   中英

如何讓 QFileDialog 提示覆蓋?

[英]How can I get a QFileDialog to prompt for overwrite?

我有一個 QDialog 可以像這樣打開一個 QFileDialog:

QFileDialog fd(this);
fd.setFileMode(QFileDialog::AnyFile);

if (fd.exec()) {
    // save data to a file
}

不幸的是, 默認行為似乎不是那么默認,如果我選擇一個已經存在的文件,文件對話框不會提示我進行覆蓋。 首先調用setConfirmOverwrite(true)setOption(QFileDialog::DontConfirmOverwrite, false)也無濟於事。 我已經在 Ubuntu 11.04 和 Windows XP 上的 Qt 4.7.3 和 4.7.4 上對此進行了測試。

我環顧四周,發現了這個錯誤報告 QFileDialog::getSaveFileName()有這個問題,但它是特定於 Maemo 的,並且在 Qt 4.7.3 出現之前修復得很好。 如果我在我的應用程序中使用該方法它工作得很好,我會收到關於覆蓋文件的提示。 (出於不相關的原因,我不想使用getSaveFileName() 。)

我找不到其他人抱怨這對他們不起作用。 我做錯了什么,還是這是一個錯誤? 我認為這可能是由於對話框不知道它是否只是一個簡單的打開對話框,提示沒有意義,但我沒有看到一種方法來告訴它它是一個保存對話框(除了設置確認覆蓋選項,失敗),並且文檔確實說它應該默認提示。

您還應該確保對話框處於保存模式,因為它不會認為您在打開模式下覆蓋了文件。 你可以通過調用fd.setAcceptMode(QFileDialog::AcceptSave);來做到這一點fd.setAcceptMode(QFileDialog::AcceptSave); 在您的代碼示例中。 請參閱QFileDialog::acceptMode

暫無
暫無

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

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