QDockWidgets和QLayouts

时间:2014-07-19 21:16:33

标签: python pyqt

我刚遇到QDockWidgets。我对这些小部件提供的灵活性感到震惊。但看来他们确实需要提前做好规划。

我在这里举了一个简单的例子:

import sys
from PyQt4 import QtCore, QtGui

class GUI(QtGui.QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()

        mainWidget=QtGui.QWidget()
        self.setCentralWidget(mainWidget)

        mainLayout = QtGui.QVBoxLayout()
        mainWidget.setLayout(mainLayout)        

        DockA = QtGui.QDockWidget('DockA')   
        DockB = QtGui.QDockWidget('DockB')   

        mainLayout.addWidget(DockA)
        mainLayout.addWidget(DockB)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    dialog = GUI()
    dialog.show() 
    dialog.raise_()       
    sys.exit(app.exec_())

首先,我是QMainWindow的子类。然后创建QWidget。然后通过.setCentralWidget()将其指定为中心。创建下一个QVBoxLayout()并将其设置为mainWidget。 现在创建DockA和DockB。对话框显示出来。但码头不可移动。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

来自官方文件:

QDockWidget provides the concept of dock widgets, also know as tool palettes or
utilitywindows. Dock windows are secondary windows placed in the
"dock widget area" around the central widget in a QMainWindow

请参阅详细说明 here和示例here。它是用C ++编写的,但你可以了解如何做事。

答案 1 :(得分:0)

您应该使用addDockWidget的{​​{1}}方法来获得功能齐全的移动停靠窗口。

示例:

QMainWindow