Qt UI测试:如何使用QTest模拟QMenuBar项目的点击?

我试图模拟鼠标点击QMenuBar上的QMenu项目,例如使用QTestLib框架点击“另存为”QAction。

我在Windows XP 32位和Qt 5.0.2下运行。

有任何想法吗?


可能这个问题与问题所有者无关,但我想这可能对其他人有帮助。

不像QToolBarQMenu没有办法widgetForAction 。 我发现了这种情况的一个简单的解决方法。 尝试使用QTest::mouseClick弹出菜单,如果没有任何反应尝试使用QTest::keyClick(..., first_char_in_menu_tite, Qt::AltModifier) 。 要模拟动作执行,您可以使用Qt::Key_Down进行操作,直到达到它,然后按Qt::Key_Enter 。 我想下面的代码可以帮助你理解

QMenu *menu = getMenu(mainWindow, menuName);
if (menu != nullptr) {
    QTest::keyClick(mainWindow, menu->title().at(1).toLatin1(), Qt::AltModifier);
}


QList<QAction *> actions = menu->actions();
foreach (QAction *action, actions) {
    if (action->objectName() == actionName) {
        QTest::keyClick(menu, Qt::Key_Enter);
        break;
    }
    QTest::qWait(1000);
    QTest::keyClick(menu, Qt::Key_Down);
}

你应该使用QTest :: mouseClick函数。 它将模拟任何QWidget上的点击。 我发现尝试点击一个导致阻塞呼叫的QMenu不适用于单元测试。

链接地址: http://www.djcxy.com/p/71507.html

上一篇: Qt UI testing: How to simulate a click on a QMenuBar item using QTest?

下一篇: CSS Inliner in Javascript (premailer)