我有一个自定义小部件,整体布局为QVBoxLayout。它包含多个标签、一个QFormLayout、一个按钮和一个拉伸以消耗所有多余的空间。其中一个标签可能会很大,因此我正在努力确保没有任何奇怪的情况导致文本无法读取。该小部件包含在QScrollArea中,以确保如果用户缩小整个窗口,则仍然可以看到小部件的所有方面。
QLabel似乎能够很好地调整大小,但一旦宽度达到某一点,它就会截断标签底部的几行,并将空间分配给小部件底部的拉伸。
我在没有设计师的情况下完全使用代码完成这一切,因此很有可能我遗漏了一些东西。子组件按以下顺序添加到整体QVBoxLayout中:
测试结果:通过检查QLabel的sizeHint()函数返回的结果,随着部件水平收缩,返回的值似乎没有改变。然而,QLabel确实会展开以占用更多的垂直空间(153相对于103的提示),只是不足以容纳所有文本。当QLabel首次显示时,它比其sizeHint少一些像素,但仍足够其hasHeightForWidth数量。当它被调整大小时,它比其hasHeightForWidth数量少30,但超过其sizeHint。
我已经检查了并且确定大的QLabel的hasHeightForWidth()和wordWrap()值为true。我做错了什么?
QLabel似乎能够很好地调整大小,但一旦宽度达到某一点,它就会截断标签底部的几行,并将空间分配给小部件底部的拉伸。
我在没有设计师的情况下完全使用代码完成这一切,因此很有可能我遗漏了一些东西。子组件按以下顺序添加到整体QVBoxLayout中:
OverallLayout = new QVBoxLayout(this);
Title = new QLabel();
Description = new QLabel();
SubRegion = new QFormLayout();
Button = new QButton();
...
// set text values, wordWrap(true), and Font for labels
OverallLayout->addWidget(Title);
OverallLayout->addWidget(Description);
OverallLayout->addLayout(SubRegion);
OverallLayout->addStrut(MIN_DIST);
OverallLayout->addWidget(Button);
OverallLayout->addStretch(STRETCH_FACTOR);
测试结果:通过检查QLabel的sizeHint()函数返回的结果,随着部件水平收缩,返回的值似乎没有改变。然而,QLabel确实会展开以占用更多的垂直空间(153相对于103的提示),只是不足以容纳所有文本。当QLabel首次显示时,它比其sizeHint少一些像素,但仍足够其hasHeightForWidth数量。当它被调整大小时,它比其hasHeightForWidth数量少30,但超过其sizeHint。
我已经检查了并且确定大的QLabel的hasHeightForWidth()和wordWrap()值为true。我做错了什么?
setMinimumHeight()
的建议呢? - jdi