Как сложить оболочку QTreeWidgetItem
Мне нужно заполнить QTreeWidget элементами (или дочерними элементами), которые могут оказаться слишком длинными, чтобы вписаться в одну строку, поэтому я ищу способ их переноса.
Я думал, что
myQTreeWidget.setWordWrap(True)
(сделанный через QtDesigner4) выполнил бы эту работу, но это, похоже, не так.
Я не знаю, является ли это актуальным, но дерево окутано рамкой сплиттера, поэтому обертка должна быть динамической, чтобы разрешить изменение размера разделителя.
Любые идеи? Я использую PyQt4, но подсказки на любом языке/привязке будут оценены.
Ответы
Ответ 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 не должен содержать более одной строки текста для каждого элемента.