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



目标:
我正在尝试在列表中显示一个自定义小部件的几个实例。小部件可能包含用户定义的长路径,因此我有一个从QLabel派生的类,它可以省略[0]文本(ElidedLabel)。列表项应该是可选择的,所以我使用QListWidget来显示它们。然后将所述自定义小部件的实例设置为每个QListWidgetItem的项目小部件
ElidedLabel按照这里的建议实现:状态栏和elided标签

问题:
自定义小部件往往比显示它的QListWidget更宽。为了使用ElidedLabel,QListWidgets应该调整自定义小部件的大小以匹配其宽度,从而消除文本。出于某种原因,这并没有发生,自定义小部件只是被剪裁掉了。

我尝试过的:
我放了一个最小的例子,演示了一个伪"自定义小部件",它消除了主窗口中普通布局的子窗口。同一个小部件没有在QListWidget中作为一个项目小部件正确地消除
SizePolicies在任何地方都设置为Preferred,但我觉得我也玩过其他一切。ElidedLabel的minimumWidth设置为1以允许其收缩。布局约束保留为默认值。QListWidget的ResizeMode设置为Adjust

所以不会让我发布截图,请在这里找到:ht*ps://filetrain.de/elidetest.png

[0]:elide:剪切不合适的文本,并用省略号("…")替换

将这两种方法添加到ElidedLabel

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

最新更新