c++ Qt - QTest::keyClick()-它是否与绘制同步?

py49o6xq  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(114)

我想用QTest测试一个GUI。
我计划有一个单独的线程来执行QTest::keyClick()测试步骤,但我希望将我的测试步骤与QWidget::repaint()同步,即,我希望每个QTest::keyClick()仅在由上一个QTest::keyClick()的重绘引起的重绘(如果有)之后发生

  1. QTest::keyClick()
    1.从步骤1重新绘制
  2. QTest::keyClick()
    1.从步骤2重新绘制
    我不要
  3. QTest::keyClick()
  4. QTest::keyClick()
    1.从步骤1重新绘制
    1.从步骤2重新绘制

问题

如何确保keyClick()不会在先前keyClick()的绘制事件之前发生?

eblbsuwk

eblbsuwk1#

无需同步:每次调用keyClick()都会导致调用qApp->processEvents()

static void simulateEvent(QWindow *window, bool press, int code,
                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay=-1)
    {
        QEvent::Type type;
        type = press ? QEvent::KeyPress : QEvent::KeyRelease;
        qt_handleKeyEvent(window, type, code, modifier, text, repeat, delay);
        qApp->processEvents();
    }

这将在下一个QTest.keyClick()之前触发任何绘制事件。

相关问题