C++ 自定义QDockWidget显示

C++ 自定义QDockWidget显示,c++,python,qt,pyqt,qt-designer,C++,Python,Qt,Pyqt,Qt Designer,如果Qt::BottomDockWidgetArea或Qt::TopDockWidgetArea中的dockwidget不占用Qt::LeftDockWidgetArea或Qt::RighDockWidgetArea空间,您将如何获得dockwidget/centralwidget的显示 这是实际显示,右上角有2个dockwidget和中心小部件: 这将是首选显示: 要想让它正常工作(有点奇怪)的诀窍是将QMainWindow设置为主窗口的中心小部件 以下是此的PyQt端口: 您可能应该使用的

如果
Qt::BottomDockWidgetArea
Qt::TopDockWidgetArea
中的dockwidget不占用
Qt::LeftDockWidgetArea
Qt::RighDockWidgetArea
空间,您将如何获得dockwidget/centralwidget的显示

这是实际显示,右上角有2个dockwidget和中心小部件:

这将是首选显示:

要想让它正常工作(有点奇怪)的诀窍是将QMainWindow设置为主窗口的中心小部件

以下是此的PyQt端口:


您可能应该使用的角落功能,以获得您想要的行为

类似的操作可能会起作用(抱歉,无法测试其是否编译):

见:
*

将它们添加到
QMainWindow
的顺序是否会产生影响?@cmannett85不,没有影响
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_())
mainWindow->setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
mainWindow->setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
mainWindow->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
mainWindow->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);