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