Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Создание древовидной структы с помощью классов QTreeWidget, QTreeWidgetItem
Наконец дошли до QTreeWidget. Класс этот позволяет создавать визуальный объект древовидного типа. Ну, скажем, представить файловую систему. Класс QTreeWidget работает в паре с классом QTreeWidgetItem. Можно сказать, что объект последнего класса это строка. Дерево имеет не только строки, но столбцы. Каждый элемент дерева может иметь вложенные элементы.
Ниже представлена простая программа, в которой показаны элементарные приёмы при создании дерева. Есть, конечно, и другие вопросы: как программно просматривать дерево, как его редактировать. Ну, этим займёмся в одной из следующих статей. Работу программы см. на рисунке 1. Что я хотел представить в данном статье:
- Добавление корневых элементов.
- Добавление обычных элементов к родительскому элементу.
- Окрашивание отдельных полей.
- Добавление пиктограмм.
Пояснение к программе.
- Создание дерева, как и следовало ожидать осуществляется вызовом QTreeWidget(). В качестве аргумента указывается объект QWidget - окно.
- Задать количество столбцов можно setColumnCount(). Впрочем определяющим является метод setHeaderLabels(), который устанавливает имена столбцов.
- Добавить корневые элементы дерева можно двумя способами. Первый - метод addTopLevelItem(). Можно также при создании элемента QTreeWidgetItem() первым аргументом указать дерево. В нашем случае это объект self.tree.
- При создании элемента с помощью QTreeWidgetItem() первым аргументом указываем родительский элемент. В сущности вот и весь алгоритм формирования дерева.
- Для окрашивания строки (элемента) дерева в начале создаём объект QColor. Затем используем метод QTreeWidgetItem.setBackground() для соответствующего элемента. При этом первый аргумента это номер столбца, а вторым аргументом стоит объект QColor.
- Для каждого поля строки можно добавить пиктограмму. Для этого создаём объекты QIcon указывая файлы. А затем используем метод QTreeWidgetItem.setIcon(), первым аргументом которого указывается номер столбца, а вторым пиктограмма.
Результат смотрим на рисунке 1.
Обращу также внимание на то, что я масштабирую элемент QTreeWidget. См. обработку события resizeEvent().
Замечание
Вы заметили, что рассматриваемый нами объект QTreeWidget в сущности является расширением списка?
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.