【问题标题】:QListWidgetItem items overlap each otherQListWidgetItem 项目相互重叠
【发布时间】: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


【解决方案1】:

如果您想将setMinimumSize() 用于QLabel,并且QLabel 有父级。 使用 QGridLayout 作为小部件的父级。布局应用其子项的最小尺寸。

如果您不想使用QGridLayout,您可以setMinimumSize() 为父级设置正确的值。 这个值是它所有孩子的最小尺寸的总和。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多