Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. QFileDialogの自動化について
Forum Update on Monday, May 27th 2025

QFileDialogの自動化について

Scheduled Pinned Locked Moved Unsolved Japanese
qtestqfiledialogselectfilefindchildgui automation
1 Posts 1 Posters 1.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • TakeshiT Offline
    TakeshiT Offline
    Takeshi
    wrote on last edited by Takeshi
    #1

    はじめまして。Takeshiです。
    QTestを用いた自動化を実施することを検討しています。

    あらかじめ用意してあるフォームやオブジェクトについてはテストが可能なのですが、
    ローカルで定義したオブジェクトを使った自動化作業で行き詰っています。
    対象となるObjectはQFileDialogです。

    ひとまずネットから引用してTopWigetを取得する関数を用いて、
    以下のところまで作成することができました。

    QFileDialog* QTest_forTESTGUITest::waitForFileDialog(int timeout)
    {
      int waitMSec = 0;
      while (waitMSec <= timeout) {
        QWidgetList allToplevelWidgets = QApplication::topLevelWidgets();
        foreach (QWidget w, allToplevelWidgets) {
          if (w->inherits("QFileDialog")) {
            QFileDialog
    fileDialog = qobject_cast<QFileDialog*>(w);
            QTest::qWaitForWindowActive(fileDialog);
            return fileDialog;
          }
        }
        QTest::qWait(10);
        waitMSec += 10;
      }
      return 0;
    }

    悩みはこの後です。
    以下のように、testCase1_FileDialogの中でFileDialogを取得した後、
      ・ファイルを指定
      ・開くボタンを押下
    の2操作が実現できません。
     (フラグのON、OFF設定やsingleShotについてはModalであるが故の処置です。)

    //ここでフラグ立てる
      this->isTestCase = true;

    //ファイルダイアログの表示
      QTimer::singleShot(0, this, SLOT(testCase1_FileDialog()));
      QTest::mouseClick(foepn_button, Qt::LeftButton);

    //フラグ戻す
      this->isTestCase = false;
    }

    void QTest_forTESTGUITest::testCase1_FileDialog()
    {
      if (this->isTestCase) {
        // FileDialogを取得
        QFileDialog* fileDialog = this->waitForFileDialog();
        //file選択
        fileDialog->hide();
        fileDialog->selectFile(exepath);
        fileDialog->show();
      }
    }
    今のところ、selectFileで指定する文字列にも「\」が「/」になってしまうし、
    開くボタンをfindすることもできていません。

    勉強不足で申し訳ありませんが、何かアドバイスをいただきたいです。

    環境は以下のとおりです。
    ・Qt5.2.0 LGPL
    ・OS:Windows 7

    よろしくお願いします。

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved