【问题标题】:QTest mouseClick on a QPushButtonQTest 鼠标单击 QPushButton
【发布时间】:2013-12-05 07:45:16
【问题描述】:

我尝试使用 QTest 命名空间的 mouseClick 函数单击 QPushButton。 QPushButton 是 Widget 的私有成员。点击时鼠标光标的位置在按钮的中心,但是按钮没有被点击... 有人能解释一下为什么吗?

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

谢谢

【问题讨论】:

  • 也许原因是您将鼠标事件发送到父窗口小部件而不是按钮本身?
  • 问题是按钮是小部件的私有成员,所以我无法访问它。
  • 好吧,如果您尝试通过调用:QWidget *btn = myWidget->childAt(70, 100); 来找到您的按钮,然后调用鼠标单击它呢?
  • 谢谢,效果很好!

标签: qt qtestlib


【解决方案1】:

让评论成为答案。

问题的可能原因是您将鼠标事件发送到父窗口小部件而不是按钮本身。如果您尝试使用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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2019-10-21
    相关资源
    最近更新 更多