Подтвердить что ты не робот

Как сложить оболочку QTreeWidgetItem

Мне нужно заполнить QTreeWidget элементами (или дочерними элементами), которые могут оказаться слишком длинными, чтобы вписаться в одну строку, поэтому я ищу способ их переноса.

Я думал, что

myQTreeWidget.setWordWrap(True)

(сделанный через QtDesigner4) выполнил бы эту работу, но это, похоже, не так.

Я не знаю, является ли это актуальным, но дерево окутано рамкой сплиттера, поэтому обертка должна быть динамической, чтобы разрешить изменение размера разделителя.

Любые идеи? Я использую PyQt4, но подсказки на любом языке/привязке будут оценены.

4b9b3361

Ответ 1

Я успешно нашел обходное решение: я огибаю QLabel в WidgetItem, устанавливая QLabel для возможности переноса слов.

item = QTreeWidgetItem()
label = QLabel('long text here')
label.setWordWrap(True)

MyTree.addTopLevelItem(item)
MyTree.setItemWidget(item, 0, label)

поведение точно соответствует желаемому!!

Ответ 2

setWordWrap просто вызывает обертку вокруг границ слова... он НЕ будет принуждать что-либо к новой строке.

То, что вы ищете, невозможно по умолчанию QTreeWidget. Я предлагаю отображать слишком длинный текст альтернативным способом, например, над текстом мыши или отдельной меткой. TreeViews не должен содержать более одной строки текста для каждого элемента.