QTest mouseClick on a QPushButton

6.2k views Asked by At

i tried to click a QPushButton with the mouseClick function of the QTest namespace. The QPushButton is a private Member of an Widget. The position of the mouse cursor during the click is in the center of the button, but the Button is not clicked... Can somebady explain me why?

MyWidget *myWidget= new myWidget();

myWidget->show();

while ( !myWidget->isVisible() ) {
     QTest::qWait(200);
}

QTest::qWait(500);
QTest::mouseMove ( myWidget, QPoint( 70, 100 ), -1 );
QTest::mouseClick ( myWidget, Qt::LeftButton, Qt::NoModifier, QPoint( 70, 100 ), 100);

Thanks

1

There are 1 answers

0
vahancho On BEST ANSWER

Make the comment to be the answer.

The possible reason for the problem is that you send the mouse event to the parent widget rather then to the button itself. What if you try to find your button by using QWidget::childAt() function? For example:

[..]
QTest::mouseMove ( myWidget, QPoint( 70, 100 ), -1 );
QWidget *btn = myWidget->childAt(70, 100);
if (btn) {
    QTest::mouseClick ( btn, Qt::LeftButton, Qt::NoModifier, QPoint( 70, 100 ), 100);
}