使用Qt Creator中的设计器,我创建了一个对话框,其中包含垂直布局的各种小部件。小部件之一是QLabel,其自动换行设置为true。 QLabel的文本仅在显示对话框之前设置。
QLabel的最大宽度和高度为16777215,垂直大小策略设置为“扩展”,水平为“首选”。我尝试过更改大小政策。
我的问题是,如果文本较大,则QLabel无法相应地进行调整,并且文本会被剪切,如下所示:-
在设置文本之后,我尝试为对话框调用updateGeometry(),并且还尝试在垂直布局上调用update,但是似乎没有任何区别。理想情况下,我希望QLabel垂直调整以适应文本。
有人可以告诉我我在这里想念的吗?
最佳答案
将标签的垂直大小策略设置为QSizePolicy::Minimum
。
然后将对话框布局的大小约束设置为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++ - 在布局中的QLabel上设置文本,不会调整大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19293507/