[英]QFileDialog: using getOpenFileName allow for non-existent files
我想用qt編寫一個瀏覽按鈕,以打開一個標准的查找文件對話框。 如果用戶在對話框中輸入新文件名,我想創建該文件。 如果文件存在,我想打開它。
我有一個給定字符串的函數將做出決定。 然而, QFileDialog::getOpenFileName
顯示用戶一個錯誤,如果文件不存在,並且QFileDialog::getSaveFileName
要求用戶進行確認,以覆蓋該文件,如果它確實存在(我不會做反正,所以應該未顯示)。
是否有一個實施的qt標准可以滿足我的需求,而不必創建從QFileDialog
繼承的自定義類或訴諸於另一個類似的麻煩情況?
這是我當前的工作代碼,具有不良行為...
void Login::browseFile() {
QString file = ui->txtFile->text();
if (file.isEmpty()) { file = QDir::homePath(); }
file = QFileDialog::getOpenFileName(this,
tr("Select Monage Database"), file,
tr("Database Files (*.db)"));
if (!file.isEmpty()) { OpenDb(file); }
}
谷歌讓我失望,但幾分鍾審議的文檔,我發現這個 :
QFileDialog :: DontConfirmOverwrite 0x00000004不要求確認是否選擇了現有文件。 默認情況下,要求確認。
我能夠將其用於getSaveFileName
來實現所需的功能。 我必須指定選項selectedFilter
,但只是傳遞了默認值0
。
修改后的代碼:
void Login::browseFile() {
QString file = ui->txtFile->text();
if (file.isEmpty()) { file = QDir::homePath(); }
file = QFileDialog::getSaveFileName(this,
tr("Select Monage Database"), file,
tr("Database Files (*.db)"), 0,
QFileDialog::DontConfirmOverwrite);
if (!file.isEmpty()) { OpenDb(file); }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.