2009-08-17 18 views
5

मेरे पास एक डॉक विजेट है, अब मैं विजेट को दिखाने/छिपाने के लिए "विंडो" मेनू जोड़ना चाहता हूं। आसानQDockWidget दिखाएँ/छुपाएं?

showPropWinAct = new QAction(tr("&Properties"), this); 
showPropWinAct->setStatusTip(tr("Show properties window")); 
showPropWinAct->setCheckable(true); 
connect(showPropWinAct, SIGNAL(toggled(bool)), propertiesWindow, SLOT(setVisible(bool))); 

समस्या है के साथ क्या करने के लिए पर्याप्त उपयोगकर्ता क्लिक करता है जब [x] विजेट पर, showPropWinAct टॉगल प्राप्त करता है। मैं इस घटना के लिए कैसे सुन सकता हूं, और एक दूसरे सेट को बंद करने के बिना कार्रवाई को ठीक से टॉगल कर सकता हूं, संभवतः निकटतम घटना से एक और connect से ऊपर)?

उत्तर

21

एक नई कार्रवाई करने के बजाय, बस QDockWidget से ही कार्रवाई प्राप्त करें और इसका उपयोग करें। यह आप के लिए राज्य का ध्यान रखेंगे:

http://qt-project.org/doc/qt-4.8/qdockwidget.html#toggleViewAction

QAction * QDockWidget::toggleViewAction() const

"एक चेक करने योग्य कार्रवाई पता चलता है कि या इस गोदी विजेट बंद करने के लिए इस्तेमाल किया जा सकता रिटर्न

कार्रवाई के पाठ निर्धारित है। डॉक विजेट के विंडो शीर्षक के लिए। "

+1

हां! प्रतिभाशाली। ऐसा करने के लिए एक बेहतर तरीका होना चाहिए था। आपको बहुत - बहुत धन्यवाद! :) – mpen

+1

डिजाइनर में ऐसा करने का कोई तरीका? वर्तमान में मैं सिर्फ 'शून्य मुख्यविंडो :: on_dockWindow_visibilityChanged (बूल दृश्यमान) का उपयोग करता हूं {ui-> actionDockWindowToggle-> सेट चेक (दृश्यमान); } 'और फिर 'setShown()' क्रिया' on_toggled() 'स्लॉट में। यह काफी अच्छी तरह से काम करता है और कोड की केवल दो पंक्तियां हैं, लेकिन यदि डिजाइनर में 'टॉगल व्यूएक्शन()' का उपयोग करने का कोई तरीका है जो अच्छा होगा! – Timmmm