将项目窗口小部件宽度(列表内容)调整为父级QListWidget宽度

时间:2015-03-03 15:18:00

标签: c++ qt

目标:
我试图在列表中显示自定义窗口小部件的多个实例。小部件可能包含很长的用户定义路径,因此我有一个派生自QLabel的类,它可以省略[0]文本(ElidedLabel)。列表项应该是可选择的,所以我使用QListWidget来显示它们。然后将所述自定义小部件的实例设置为每个QListWidgetItem的项目小部件 ElidedLabel按照建议实施:Status bar and elided label

问题:
自定义小部件往往比显示它的QListWidget更宽。要使用ElidedLabel,QListWidget应调整自定义窗口小部件的大小以匹配其宽度,以便省略文本。由于某种原因,这种情况不会发生,自定义小部件会被剪裁。

我尝试过的事情:
我已经整理了一个minimal example来演示一个虚拟的"自定义小部件"在主窗口中作为普通布局的孩子很好。同样的小部件正确地作为QListWidget中的项目小部件消失 SizePolicies在任何地方都设置为Preferred,但我觉得我也玩过其他所有内容。 ElidedLabel的minimumWidth设置为1,以允许它缩小。布局约束保留默认值。 QListWidget将ResizeMode设置为Adjust

SO不会让我发布截图,请在此处找到:ht * ps://filetrain.de/elidetest.png

[0]: elide :切断不合适的文字并用省略号替换(' ...')

1 个答案:

答案 0 :(得分:0)

将这两种方法添加到ElidedLabel

virtual QSize minimumSizeHint() const
{
    return QSize(0, QLabel::minimumSizeHint().height());
}
virtual QSize sizeHint() const
{
    return QSize(0, QLabel::sizeHint().height());
}