2011-03-19 10 views
14

मैं क्यूटी के लिए नौसिखिया हूं और वर्तमान में क्यूटी निर्माता और कच्चे सी ++ कोड के साथ खेल रहा हूं। मैंने क्यूएक्शन ऑब्जेक्ट्स को जोड़कर मेनू और टूलबार समेत कुछ सरल कार्यक्षमता काम करने में कामयाब रहा है। हालांकि मुझे कुछ कठिनाई हो रही है:क्यूटी 4.7 में, क्यूटूलबार बटन में पॉप-अप मेनू कैसे जोड़ा जा सकता है?

मैं क्या करना चाहता हूं जिसमें मेनू विकल्प है जिसमें सबमेनू है, उदा। नई, वस्तुओं के साथ एक सबमेनू के साथ, और QToolbar पर इसे डुप्लिकेट करें। मैंने इसे मेनू में प्रबंधित किया है: QMenu के रूप में नया, और सबमेनू आइटम QAction ऑब्जेक्ट्स के रूप में। मैं नहीं देख सकता कि टूलबार में काम करने के लिए इसे कैसे प्राप्त किया जाए, उदा। एक नया बटन, जिसे क्लिक करने पर, "डिफ़ॉल्ट" क्यूएक्शन (जैसे पहला उपमेनू आइटम) चलाएगा, लेकिन अन्य सभी विकल्पों की पेशकश करने के लिए एक छोटे मेनू बटन के साथ। मुझे लगता है कि यह Office टूलबार पर पूर्ववत/फिर से बटन के समान है।

QMenu *menu = new QMenu(); 
QAction *testAction = new QAction("test menu item", this); 
menu->addAction(testAction); 

QToolButton* toolButton = new QToolButton(); 
toolButton->setMenu(menu); 
toolButton->setPopupMode(QToolButton::InstantPopup); 
toolBar->addWidget(toolButton); 

आशा है कि यह मदद करता है, का संबंध

उत्तर

22

मेरा मानना ​​है कि QToolButton विजेट तुम क्या करने की कोशिश कर रहे हैं के लिए ठीक काम करना चाहिए, अगर और उदाहरण नीचे आप के लिए काम करेंगे देखने कुछ प्रकार का सबमेनू है, जो QToolButton::setPopupMode(ToolButtonPopupMode mode) के साथ सेट है। अगर मैंने आपको सही किया है, तो यह शुरू करने के लिए एक जगह होगी: http://doc.qt.io/archives/qt-4.7/qtoolbutton.html#ToolButtonPopupMode-enum

2

serge_gubenco का जवाब काम करेगा, सिवाय इसके कि विंडो को छोटे आकार में बदलने की आवश्यकता है और Qt QToolButton को पॉपअप मेनू में स्वयं रखने की कोशिश करता है। ऐसा करने में असमर्थ हो सकता है। http://doc.qt.io/archives/qt-4.7/qtoolbar.html देखें।

समाधान एक त्वरित QWidgetAction का उपयोग करना है, जैसा कि नीचे एक संशोधित स्निपेट में है।

QMenu *menu = new QMenu(); 
QAction *testAction = new QAction("test menu item", this); 
menu->addAction(testAction); 

QToolButton* toolButton = new QToolButton(); 
toolButton->setMenu(menu); 
toolButton->setPopupMode(QToolButton::InstantPopup); 

QWidgetAction* toolButtonAction = new QWidgetAction(this); 
toolButtonAction->setDefaultWidget(toolButton); 

toolBar->addAction(toolButtonAction); 
संबंधित मुद्दे