我试图在按钮内放置一个复选框和一些文本,但是我无法使按钮扩展到足以看到全文的程度。



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

10-06 12:09