我想知道如何在编辑包含此小部件的QDialog的高度时创建一个自动适合空间的小部件。
在下面的示例中,QPushButton将适合QDialog的宽度,但不适合高度。但是,如果我创建一个QTextEdit而不是QPushButton,QTextEdit将完全适合QDialog。
from PySide.QtGui import *
class c (QDialog):
def __init__(self):
QDialog.__init__(self)
self.setLayout(QVBoxLayout())
self.layout().setSpacing (0)
self.layout().setContentsMargins(0,0,0,0);
btn = QPushButton()
self.layout().addWidget(btn)
self.exec_()
a = c()
答案 0 :(得分:1)
您需要将尺寸政策设定为展开。 我不知道python中的语法,但你可以很容易地从C ++中翻译。
QPushButton* button = new QPushButton(this);
button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
答案 1 :(得分:1)
The C++ documentation of the QBoxLayout Class陈述
QBoxLayout::addWidget(widget, stretch=0, alignment=0)
如果伸展因子为0且QBoxLayout中没有其他内容的拉伸系数大于零,则根据所涉及的每个窗口小部件的QWidget:sizePolicy()分配空间。
请查看QPushButton
Policy
>>> btn = QPushButton()
>>> btn.sizePolicy().horizontalPolicy()
1
>>> btn.sizePolicy().verticalPolicy()
0
我们会发现,垂直政策是固定的。添加按钮
[...]
btn = QPushButton()
policy = btn.sizePolicy().horizontalPolicy()
btn.setSizePolicy(policy, policy)
self.layout().addWidget(btn)
[...]
现在会自动调整您的对话框按钮。