を使用して自動テストコードを書いていqtestlib
ます。以下のコード例では:
#include <QtTest/QtTest>
QWidget *win = new QWidget;
QLabel *label = new QLabel("&what");
QLineEdit *le = new QLineEdit;
label->setBuddy(le);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(label);
layout->addWidget(le);
win->setLayout(layout);
win->show();
QTestEventList events1, events2;
events1.addKeyClick(Qt::Key_W, Qt::AltModifier);
events1.addKeyClicks("hello");
events1.addDelay(1000);
events1.simulate(win); // didn't type 'hello'
events2.addKeyClicks("world");
events2.addDelay(1000);
events2.simulate(le); // did type 'world'
le
イベントを親ウィジェットに送信して、フォーカスを取得して「こんにちは」と入力することはできませんwin
。しかし、イベントをle
直接送信することでそれを行うことができます。
通常、カスタム QWidget クラスには多くのプライベート ウィジェット メンバーが存在します。また、イベントをインスタンスに送信してキー/マウス イベントをシミュレートすることはできません。また、プライベート ウィジェットにイベントを送信することもできません。では、そのようなクラスに対して自動テストを実行するにはどうすればよいでしょうか?
環境: Gentoo Linux KDE Qt-4.8