Вопрос

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

Это было полезно?

Решение

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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top