Цель:
Я пытаюсь отобразить несколько экземпляров настраиваемого виджета в списке. Виджет может содержать длинные пользовательские пути, поэтому у меня есть класс, полученный из QLabel, который может удалять текст [0] (ElidedLabel
). Элементы списка должны быть выбраны, поэтому я использую QListWidget для их отображения. Экземпляр указанного пользовательского виджета затем устанавливается как элементный виджет для каждого объекта QListWidgetItem.
ElidedLabel реализован как предложено здесь: Status bar and elided labelИзменить ширину виджета элемента (содержимое списка) родительской ширине QListWidget
Проблема:
Пользовательский виджет имеет тенденцию быть шире QListWidget его отображения. Чтобы использовать ElidedLabel, QListWidget должен изменить размер пользовательского виджета, чтобы он соответствовал его ширине, чтобы текст удалялся. По какой-то причине этого не происходит, и пользовательский виджет просто обрезается.
Что я пробовал:
я поставил вместе minimal example, демонстрирующие фиктивный «пользовательский виджет», который elides штраф в детстве обычного макета в главном окне. Тот же виджет делает не правильно высвечивается как элементный виджет в QListWidget.
Формат SizePolicies установлен на Preferred
везде, но мне кажется, что я играл со всем остальным. У ElidedLabel минимальная ширина равна 1
, чтобы уменьшить ее. Ограничения макета оставались по умолчанию. У QListWidget установлен ResizeMode значение Adjust
.
SO не позволит мне опубликовать скриншот, найти его здесь: HT * пс: //filetrain.de/elidetest.png
[0]: Elide: отрезать текст, который не приспосабливать и заменить его многоточием ('...')