c – 在布局中设置QLabel上的文本,不会调整大小
作者:互联网
在Qt创建器中使用设计器我创建了一个对话框,其中包含垂直布局中的各种小部件.其中一个小部件是QLabel,其中自动换行设置为true. QLabel的文本在对话框显示之前设置.
QLabel的最大宽度和高度为16777215,垂直尺寸策略设置为“扩展”,水平线为“首选”.我已经尝试过更改大小政策.
我遇到的问题是,如果文本很大,QLabel无法相应调整,文本被剪裁,如下所示: –
我尝试在设置文本后调用updateGeometry(),并尝试在垂直布局上调用update,但似乎没有任何区别.理想情况下,我希望QLabel垂直调整以适应文本.
谁能告诉我我在这里失踪了什么?
解决方法:
将标签的垂直sizepolicy设置为QSizePolicy :: Minimum.
然后将对话框布局的sizeconstraint设置为QLayout :: SetMinimumSize.
这应该使您的对话框增长,以便所有内容都适合它.
像这样的东西:
QVBoxLayout *layout = new QVBoxLayout;
layout->setSizeConstraint(QLayout::SetMinimumSize);
this->setLayout(layout);
for(int i = 0; i < 5; i++)
{
QLabel *label = new QLabel;
label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
label->setWordWrap(true);
label->setText("This is a very long text. This is a very long text. This is a very long text. "
"This is a very long text. This is a very long text. This is a very long text. This is a very long text. "
"This is a very long text. This is a very long text.");
layout->addWidget(label);
}
标签:c,qt,layout,qt-creator,qlayout 来源: https://codeday.me/bug/20191005/1857378.html