2012-11-11 10 views
7

आप कैसे dockwidgets/centralwidget का प्रदर्शन है, जिसमें Qt::BottomDockWidgetArea या Qt::TopDockWidgetArea में dockwidget नहीं ले करता है और न ही Qt::LeftDockWidgetAreaQt::RighDockWidgetArea स्थान प्राप्त होगा?कस्टम QDockWidget प्रदर्शन

2 dockwidgets साथ वास्तविक प्रदर्शन, और ऊपरी दाएँ भाग में केंद्रीय विजेट है:

dockwidget display preferred

+0

एक फर्क उन्हें 'QMainWindow' को जोड़ने के आदेश करता है ? – cmannett85

+0

@ cmannett85 नहीं, इससे कोई फर्क नहीं पड़ता –

उत्तर

7

आप शायद व्यवहार आप चाहते थे प्राप्त करने के लिए QMainWindow के कोने कार्यक्षमता का उपयोग करना चाहिए।

कुछ इस तरह काम कर सकते हैं (अपने compiles है, खेद परीक्षण नहीं कर सकते):

mainWindow->setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); 
mainWindow->setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); 
mainWindow->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); 
mainWindow->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); 

देखें: * QMainWindow::setCorner(...)

+0

+1। प्रस्तावित से काफी बेहतर समाधान। – ekhumoro

3

ऐसा लगता है कि:

dockwidget display actual

यह अधिमान्य प्रदर्शन किया जाएगा यह काम करने के लिए (थोड़ा विचित्र) चाल है अपनी मुख्य विंडो के केंद्रीय विजेट के रूप में QMainWindow सेट करना है।

यहाँ इस Qt FAQ example की एक PyQt बंदरगाह है:

from PyQt4 import QtGui, QtCore 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     self.setWindowTitle('Extended Side Dock Areas') 
     self.window = QtGui.QMainWindow(self) 
     self.window.setCentralWidget(QtGui.QTextEdit(self.window)) 
     self.window.setWindowFlags(QtCore.Qt.Widget) 
     self.setCentralWidget(self.window) 
     self.dock1 = QtGui.QDockWidget(self.window) 
     self.dock1.setWidget(QtGui.QTextEdit(self.dock1)) 
     self.window.addDockWidget(
      QtCore.Qt.BottomDockWidgetArea, self.dock1) 
     self.dock2 = QtGui.QDockWidget(self) 
     self.dock2.setAllowedAreas(
      QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) 
     self.dock2.setWidget(QtGui.QLabel('Left Dock Area', self.dock2)) 
     self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dock2) 
     self.dock3 = QtGui.QDockWidget(self) 
     self.dock3.setWidget(QtGui.QLabel('Right Dock Area', self.dock3)) 
     self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dock3) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = MainWindow() 
    window.show() 
    sys.exit(app.exec_()) 
संबंधित मुद्दे