所以我一直试图在QDockwidget中制作多个复选框,但我似乎只能添加一个。这就是我所拥有的
def createDockWindows(self):
cboxes = gui.QDockWidget("Cboxes", self)
#cboxes.setWidget(gui.QCheckBox())
cboxes.setAllowedAreas(core.Qt.LeftDockWidgetArea)
self.c0 = gui.QCheckBox("B0")
self.c0.setChecked(False)
self.c0.stateChanged.connect(lambda:self.btnstate(self.c0))
cboxes.setWidget(self.c0)
self.c1 = gui.QCheckBox("B1")
self.c1.setChecked(False)
self.c1.stateChanged.connect(lambda:self.btnstate(self.c1))
cboxes.setWidget(self.c1)
self.addDockWidget(core.Qt.LeftDockWidgetArea, cboxes)
输出只给我B1的方框。
我已经完成了dock方法,因为我在右侧有一些matplotlib图,这是this示例的修改版本。如果有更好的方法可以做到这一点,我很乐意改变,我只是没有找到谷歌。
答案 0 :(得分:1)
您必须创建一个新的小部件,放置一个布局并添加复选框,您应该将它添加到QDockWidget中。
def createDockWindows(self):
cboxes = QtGui.QDockWidget("Cboxes", self)
cboxes.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea)
w = QtGui.QWidget()
layout = QtGui.QVBoxLayout()
w.setLayout(layout)
self.c0 = QtGui.QCheckBox("B0")
layout.addWidget(self.c0)
self.c1 = QtGui.QCheckBox("B1")
layout.addWidget(self.c1)
cboxes.setWidget(w)
self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, cboxes)
加[添加QSpacer]:
def createDockWindows(self):
cboxes = QtGui.QDockWidget("Cboxes", self)
cboxes.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea)
w = QtGui.QWidget()
layout = QtGui.QVBoxLayout()
w.setLayout(layout)
self.c0 = QtGui.QCheckBox("B0")
layout.addWidget(self.c0)
self.c1 = QtGui.QCheckBox("B1")
layout.addWidget(self.c1)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
layout.addItem(spacerItem)
cboxes.setWidget(w)
self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, cboxes)