2013-12-05 2 views
1

Я попытался щелкнуть QPushButton функцией mouseClick пространства имен QTest. QPushButton является частным пользователем виджета. Положение курсора мыши во время щелчка находится в центре кнопки, но кнопка не нажата ... Может ли кто-нибудь объяснить мне, почему?QTest mouseClick на QPushButton

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); 

Благодаря

+0

Возможно, причина в том, что вы отправляете событие мыши родительскому виджету, а не самой кнопке? – vahancho

+0

Проблема в том, что кнопка является частным членом виджета, поэтому я не получаю доступ к ней. – Andreas

+0

Что ж, если вы попытаетесь найти свою кнопку, вызывая: 'QWidget * btn = myWidget-> childAt (70, 100);' и чем вызывать щелчок мышью по ней? – vahancho

ответ

4

Сделать комментарий будет ответ.

Возможная причина проблемы заключается в том, что вы отправляете событие мыши родительскому виджету, а не самой кнопке. Что делать, если вы попытаетесь найти свою кнопку с помощью функции QWidget::childAt()? Например:

[..] 
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); 
} 
Смежные вопросы