0

我正在尝试生成鼠标点击。我的应用程序需要它,它必须模拟鼠标点击。

QMouseEvent *klik = new QMouseEvent(QEvent::MouseButtonPress, QCursor::pos(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::postEvent(this, klik);
QMouseEvent* klik2 = new QMouseEvent(QEvent::MouseButtonRelease, QCursor::pos(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::postEvent(this, klik2);

但它不起作用。它必须在 linux 上工作,我发现了很多 windows 的例子,但任何 linux 都不能工作:(

对不起,我的英语不好

[编辑]

我对 QTest 没什么问题。这是带有编译器错误的屏幕截图

4

2 回答 2

2

也许你可以使用QTest::mouseClick根据文档模拟鼠标点击。

例如在我的 MainWindow 的构造函数中:

button = new QPushButton("testPushButton", this);
connect(button, SIGNAL(clicked()), this, SLOT(clickedButton()));
QTest::mouseClick(button, Qt::LeftButton);

正如 yankee2905 所说,您必须将testlib添加到您的 .pro 文件中。

此外,我尝试使用您的代码,当我更改点击的位置和接收器时,它的工作方式与 testlib 相同。

QMouseEvent *klik = new QMouseEvent(QEvent::MouseButtonPress, button->pos(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::postEvent(button, klik);
QMouseEvent* klik2 = new QMouseEvent(QEvent::MouseButtonRelease, button->pos(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::postEvent(button, klik2);
于 2013-07-04T12:46:00.220 回答
1

从您的屏幕截图中,您似乎没有将“testlib”添加到您的 qmake 文件中。您将需要它来开始使用 QTest 组件。

像这样的东西:

qmake test.pro QT+=testlib
于 2013-07-04T13:36:48.353 回答