शायद यह प्रश्न प्रश्न मालिक के लिए प्रासंगिक नहीं है, लेकिन मुझे लगता है कि यह दूसरों के लिए सहायक हो सकता है।
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);
}
समझने में आपकी सहायता कर सकता है कि यह क्या हासिल करेगा? बस 'क्यूएक्शन :: ट्रिगर() 'पर कॉल करें। – cmannett85
मैं यूआई के लिए एक स्वचालित परीक्षण ऐप बनाने की कोशिश कर रहा हूं। –
यह मूल रूप से मैं भी करना चाहता हूं। मुझे लगता है कि यहां जटिलता यह है कि क्यूमेनू प्रत्येक क्यूएक्शन के लिए विजेट नहीं बनाता है: मेनू आइटम सीधे मेनू के आयत पर सीधे खींचे जाते हैं। – fatuhoku