QTestLib フレームワークを使用して「名前を付けて保存」QAction をクリックするなど、QMenuBar から QMenu アイテムのマウス クリックをシミュレートしようとしています。
Windows XP 32ビットとQt 5.0.2でこれを試しています。
何か案は?
おそらく、この質問は質問の所有者には関係ありませんが、他の人にとっては役立つと思います。
とは異なりQToolBar
、QMenu
メソッドはありません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);
}