0

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 が選択されておらず、保存されていません。どうすればこれを達成できますか?

4

2 に答える 2

1

これを試して:

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();
    }
}
于 2015-10-20T09:14:16.387 に答える