簡體   English   中英

QFileDialog:使用getOpenFileName允許不存在的文件

[英]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.

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