2012-11-11 22 views
7

Qt::BottomDockWidgetArea veya Qt::TopDockWidgetArea'daki dockwidget öğesinin Qt::LeftDockWidgetArea veya Qt::RighDockWidgetArea alanlarını almadığı bir dockwidgets/centralwidget görüntüsünü nasıl elde edersiniz?Özel QDockWidget ekranı

bu 2 dockwidgets ile gerçek görüntü ve sağ üstteki merkez widget:

dockwidget display preferred

+0

'QMainWindow' ekleyerek sırasını bir fark mı ? – cmannett85

+0

@ cmannett85 no, fark yaratmıyor –

cevap

7

muhtemelen istediği davranışı elde etmek QMainWindow 'ın köşe işlevselliğini kullanmalıdır. Böyle

şey çalışabilir (kendi derlemesinin olsun, üzgünüm test edemez):

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

Bkz: * QMainWindow::setCorner(...)

+0

+1. Önerdiğimden çok daha iyi bir çözüm. – ekhumoro

3

O görünüyor:

dockwidget display actual

Bu tercih ekranı olacağını Bu çalışmayı elde etmek için (biraz tuhaf) hile, ana pencerenizin ana pencere öğesi olarak bir QMainWindow ayarlamaktır.

İşte bu Qt FAQ example bir PyQT limanı:

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_())