簡體   English   中英

使用QFileDialog自動保存文件

[英]Automatically saving a file with QFileDialog

我必須使用QTest,Qt,C ++來自動化測試:我在選項卡(tabwidget的一部分)中編寫文本,然后嘗試將其關閉,然后出現QFileDialog(因為我對選項卡中的純文本進行了更改),我嘗試像這樣“捕獲” QFileDialog:

    QWidgetList topWidgets = QApplication::topLevelWidgets();
    foreach (QWidget *w, topWidgets) {
        if (QFileDialog *fd = qobject_cast<QFileDialog *>(w)) {
            fd->setFileMode(QFileDialog::ExistingFiles);
            fd->selectFile("/tmp/test.txt");

        }
    }

獲得QFileDialog對象后,我希望將選項卡中的更改保存到我之前在tmp目錄中創建的文件“ test.txt”中。 當我執行此操作時,什么也沒有發生,QFileDialog彈出,但是未選擇並保存test.txt,我該如何實現?

如果filedialog是可見的並且焦點設置為行編輯小部件,則selectFile方法不起作用。 從qfiledialog.cpp(QT 5.2):

if (!isVisible() || !d->lineEdit()->hasFocus())
    d->lineEdit()->setText(file);

對於我們的自動化測試,我們只需要暫時隱藏文件對話框,調用selectFile()並再次顯示

嘗試這個:

QWidgetList topWidgets = QApplication::topLevelWidgets();
foreach (QWidget *w, topWidgets) {
    if (QFileDialog *fd = qobject_cast<QFileDialog *>(w)) {
        fd->hide();
        fd->selectFile("/tmp/test.txt");
        fd->show();
        fd->exec();
    }
}

暫無
暫無

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

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