目标:的
我试图在列表中显示自定义窗口小部件的多个实例。小部件可能包含很长的用户定义路径,因此我有一个派生自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 :切断不合适的文字并用省略号替换(' ...')
答案 0 :(得分:0)
将这两种方法添加到ElidedLabel
virtual QSize minimumSizeHint() const
{
return QSize(0, QLabel::minimumSizeHint().height());
}
virtual QSize sizeHint() const
{
return QSize(0, QLabel::sizeHint().height());
}