我正在使用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