Если посмотреть на документацию Qt, то, по-видимому, есть несколько вариантов для этого, однако есть несколько важных факторов для решения, прежде чем вы сможете решить, какой подход наилучшим образом соответствует вашим потребностям.
- Является ли содержимое отображаемым в этом столбце статического или динамического дерева?
- Есть ли один к одному сопоставление строк из вашего QTreeWidget с вашим настраиваемым столбцом дерева?
Если ваш пользовательский контент столбца дерева является статическим и существует одно к одному сопоставление строк, использование функции QTreeWidget::setItemWidget (QTreeWidgetItem * item, int column, QWidget * widget) должно быть достаточным.
Однако, если содержимое столбца настраиваемого дерева является динамическим или нет сопоставления строк по одному, это потребует более сложного подхода.
Как описано в документации для QTreeWidget; «Если вы хотите отобразить собственный динамический контент или реализовать собственный виджет редактора, используйте QTreeView и подкласс QItemDelegate.»
QItemDelegate и его подклассы выполняют все средства рисования для элементов, вставленных в представления элементов Qt (например, QTreeView, QListView , QTableView и т. Д.). Это, по сути, позволяет вам контролировать ВСЕ операции рисования для любого элемента, вставленного в класс QTreeView, позволяя вам рисовать динамический контент в дополнение к возможности расширения контента по нескольким строкам.
Внедрение аналогичного подхода для QListWidget, я рекомендую использовать QStyledItemDelegate вместо QItemDelegate, так как он позволяет более легко интегрировать этот виджет с макетом вашего приложения. Поскольку вы не детализировали точное использование этого пользовательского QWidget, вам также могут потребоваться дополнительные средства, предоставляемые QItemEditorCreator, QItemEditorCreatorBase и QItemEditorFactory. Я бы опубликовал аналогичный виджет, который я разработал здесь, если бы мог, но, к сожалению, это часть проприетарного программного пакета.
Есть ли причина, по которой вы не можете просто поставить QtreeWidget слева от QWidget в QHBoxLayout? –
Мне нужен QWidget для выравнивания с QTreeWidget, чтобы я мог рисовать собственные строки для столбца. Так что прокрутка - проблема. – waddlesplash
Из любопытства: зачем вам нужен виджет, а не виджеты для каждой строки, которые могли бы общаться? –