【发布时间】:2012-12-21 18:56:45
【问题描述】:
在下面的代码中,显然有足够的空间让标签放在一行上,但由于某种原因,它在“thats”之后将它分成了两行。为什么以及如何防止这种情况发生?
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->setFixedSize(250,100);
QLabel *label = new QLabel;
label->setStyleSheet("background-color:blue");
label->setWordWrap(true);
label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
label->setText("Oh my gosh thats too funny!");
label->setParent(this);
}
再次为清楚起见,它显示:
哦,天哪,就是这样 太搞笑了!
我想要:
天哪,这太有趣了!
【问题讨论】:
-
不应该是
label->setWordWrap(false);吗???如果这不是一个错字,那么我想你有一个答案。来自 Qt 文档:“如果此属性为真,则标签文本会在必要时在分词处换行;否则根本不换行。” -
@doc 问题出在:“必要时”。这是在必要之前进行包装。
-
如果您希望您的 QLabel 适合父小部件的大小,您应该使用布局。
QVBoxLayout * layout = new QVBoxLayout; layout->addWidget(label); this->setLayout(layout);。 QWidget 不会自行重新定位和调整其子小部件的大小。 -
@doc 我认为这就是答案。