我正在使用qtestlib
编写一些自动测试代码。在下面的示例代码:QTest无法将事件传递给子窗口小部件
#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'
我不能让通过事件发送到它的父控件win
的le
获得焦点和类型“你好”。但我可以通过直接发送活动到le
来实现。
事情通常是在自定义QWidget类中有许多私人小部件成员。我无法通过将事件发送到实例来模拟键/鼠标事件。因为我无法将事件发送到其私人小部件。那么我能做些什么来对这样的类进行自动测试呢?
环境:的Gentoo Linux的KDE的Qt 4.8
在实际的代码中,我使用'QTestEventList'来模拟。我只是添加一些'addDelay()'来检查结果。 –
就是这样!而'达赖= 1'似乎也奏效了。但我担心它是机器/平台指定的。所以仍然想知道测试这样一个小部件的* universal *练习。 –
它适用于Windows 7 Professional Qt 5.1.1 creator 2.8.1 – kajojeq