9

QTestLib フレームワークを使用して「名前を付けて保存」QAction をクリックするなど、QMenuBar から QMenu アイテムのマウス クリックをシミュレートしようとしています。

Windows XP 32ビットとQt 5.0.2でこれを試しています。

何か案は?

4

2 に答える 2

8

おそらく、この質問は質問の所有者には関係ありませんが、他の人にとっては役立つと思います。

とは異なり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);
}
于 2014-04-27T20:20:05.220 に答える