【发布时间】:2014-11-18 12:28:16
【问题描述】:
我已经定义了一个小部件,它包含一个 QLabel(和其他元素),应该显示包装的文本。
此 QLabel 具有:
横向策略:最低
垂直策略:最小扩展
自动换行:是的
小部件具有:
LayoutSizeConstraint: SetMinimumSize
除此之外,我还有另一个包含 QListWidget 项目的小部件。 我想根据需要多次添加带有 QLabel 的小部件。为此,我使用了一个助手:
QListWidgetItem* showWidgetOnTheList(QListWidget* view, QWidget* widget)
{
QListWidgetItem *item = new QListWidgetItem(view);
QSize size(view->size().width(), widget->height());
item->setSizeHint(size);
view->addItem(item);
view->setItemWidget(item,widget);
return item;
}
最终结果是我看到了相互重叠的元素。什么是正确的解决方案?
【问题讨论】:
-
问题的原因是 QLabel 只要不显示就不会返回正确的大小(当 wordWrap 标志打开时)。有一个解决方法:我可以调用此 QLabel 所属的布局,两种方法:invalidate() 和 activate()。
标签: qt qlistwidget qlabel qlistwidgetitem