Как перенос слов QTreeWidgetItem - PullRequest
10 голосов
/ 03 марта 2010

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

Я думал

myQTreeWidget.setWordWrap(True)

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

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

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

Ответы [ 2 ]

18 голосов
/ 03 марта 2010

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

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

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

поведение именно то, что нужно !!

0 голосов
/ 03 марта 2010

setWordWrap просто вызывает обтекание границ слов ... это НЕ заставит что-либо переместиться на новую строку.

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

...