PyQt

2009-08-17 11 views
10

में एक टैबिफाइड QDockWidget पर फ़ोकस करना मेरे पास तीन QDockWidgets हैं जो QMainWindow.tabifyDockWidget का उपयोग करके स्टार्टअप पर टैब्ड हैं।PyQt

मुख्य विंडो में, addDockWidget कॉल की सब के बाद:

self.tabifyDockWidget(self.dock_widget1, self.dock_widget2) 
self.tabifyDockWidget(self.dock_widget1, self.dock_widget3) 

कुछ कार्रवाई के आधार पर, मैं इन में से एक टैब का चयन करने के लिए और इसे लाने के ध्यान केंद्रित करने, या, के शीर्ष पर करना चाहते हैं अन्य दो, अगर यह पहले से ही दिखाई नहीं दे रहा है। मैंने setVisible और setWindowState(Qt.WindowActive) का उपयोग करने का प्रयास किया है, लेकिन कुछ भी नहीं बदलेगा।

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

class MyMainWindow ; // A QMainWindow 

void MyMainWindow::bringToFront(QDockWidget* dockIn) 
{ 
    QList<QDockWidget*> docks = tabifiedDockWidgets(dockIn) ; 
    foreach(QDockWidget* dock, docks) 
    { 
     // Move second dock on top of first dock widget. 
     tabifyDockWidget(dock, dockIn) ; 
    } 
} 

QMainWindow::tabifiedDockWidgets() और QMainWindow::tabifyDockWidget() देखें:

उत्तर

2

मैं इस परीक्षण नहीं किया, लेकिन यहाँ है कि मैं क्या 4.5+ क्यूटी में की कोशिश करेगा (मैं आप के लिए PyQt रूपांतरण छोड़ देंगे) है।

http://qt-project.org/doc/qt-4.8/qwidget.html#raise

PyQt में, यह QWidget.raise_() है::

+0

यह निश्चित रूप से काम करता है, केवल मुद्दा यह है कि यह टैब जो गैर है reorders है आदर्श। अब तक, ऐसा लगता है कि यह केवल समाधान है ... स्निपेट के लिए धन्यवाद। – brianz

0

एक समाधान जो मेरे लिए काम कर रहा है वह है:

tabifyDockWidg एट (dock1, dock2)

dock2.setVisible (सच)

dock2.setFocus()

dock2.raise_()

3 कार्यों के लिए आवश्यक प्रतीत यही कारण है कि।

3

मेरे लिए:

dock2.show();

dock2.raise();

पर्याप्त था। लेकिन हाँ, दोनों की जरूरत है!

0

यह मेरे लिए काम नहीं किया:

dock2.raise_() 

मैं इसे का उपयोग कर काम कर पाने में कामयाब रहे:

dock2.show() 
parent.tabifyDockWidget(dock1, dock2)