我试图在按钮内放置一个复选框和一些文本,但是我无法使按钮扩展到足以看到全文的程度。
self.check = QtGui.QCheckBox("long text", self)
self.checkLayout = QtGui.QHBoxLayout()
self.checkLayout.addWidget(self.check)
self.checkButton = QtGui.QPushButton(None, self)
self.checkButton.setLayout(self.checkLayout)
我尝试了添加拉伸,设置尺寸策略,设置边距和样式等各种组合,但是到目前为止还没有运气。
谢谢
最佳答案
将布局添加到按钮。将复选框放置在布局内。看起来这是QWidget自动跟踪其子部件大小的唯一方法。
但是QWidget不会自动调整其大小以适合其内容。您必须调用adjustSize
函数来执行此操作。
class TestWidget(QtGui.QWidget):
def __init__(self, *args):
QtGui.QWidget.__init__(self, *args)
self.check = QtGui.QCheckBox("very very long text")
self.checkLayout = QtGui.QHBoxLayout()
self.checkLayout.addWidget(self.check)
self.checkButton = QtGui.QPushButton()
self.checkButton.setLayout(self.checkLayout)
self.checkButton.adjustSize()
self.checkButton.setParent(self)
UPD:
adjustSize
存在问题。如果在屏幕上添加checkButton
后调用此函数,该函数对我不起作用:# works
self.checkButton.adjustSize()
self.checkButton.setParent(self)
# doesn't work
self.checkButton.setParent(self)
self.checkButton.adjustSize()
我的解决方案是手动调整大小,而不是调用
adjustSize
:self.checkButton.setFixedSize(self.checkLayout.sizeHint())