7

您将如何显示其中的dockwidgets/centralwidget,其中dockwidget或Qt::BottomDockWidgetAreaQt::TopDockWidgetArea占用空间?Qt::LeftDockWidgetAreaQt::RighDockWidgetArea

这是实际显示,有 2 个停靠小部件和右上角的中央小部件:

码头小部件显示实际

这将是首选显示:

首选dockwidget显示

4

2 回答 2

7

您可能应该使用QMainWindow的角功能来获得您想要的行为。

像这样的东西可能会起作用(无法测试它是否编译,抱歉):

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

于 2012-12-10T09:14:54.453 回答
3

似乎让这个工作的(有点奇怪的)技巧是将 QMainWindow 设置为主窗口的中央小部件。

这是此Qt FAQ 示例的 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_())
于 2012-12-10T03:45:20.550 回答