Класс QTreeView унаследован от QAbstractItemView
и предназначен для вывода иерархических данных в виде дерева. Например, простейшее дерево:
#include <QApplication> #include <QTreeView> #include <QStandardItemModel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget* widget = new QWidget; widget->setWindowTitle("METANIT.COM"); widget->setMinimumHeight(150); widget->setMinimumWidth(250); QStandardItemModel *model = new QStandardItemModel(); QStandardItem *parentItem = model->invisibleRootItem(); QStandardItem *languages = new QStandardItem("Языки программирования"); QStandardItem *databases = new QStandardItem("Базы данных"); parentItem->appendRow(languages); parentItem->appendRow(databases); languages->appendRow(new QStandardItem("C++")); languages->appendRow(new QStandardItem("Python")); databases->appendRow(new QStandardItem("MySQL")); databases->appendRow(new QStandardItem("PostgreSQL")); QTreeView *view = new QTreeView(widget); view->setModel(model); widget->show(); return a.exec(); }
В данном случае для хранения иерархических данных применяется модель QStandardItemModel. В корневой узел этой модели добавляются два других элемента QStandardItem - languages и databases. Затем в каждый из этих элементов для примера добавляются по два других элемента. В итоге у нас получится следующее дерево:
По умолчанию отображаются только узлы, которые добавлены в корневой узел. Надимая на маркер-треугольник, мы можем раскрыть сожержимое узлов. Но как видно из скриншота, в древовидном представлении по умолчанию отображается заголовок. По умолчанию это новер строки - число 1. Но как правило, заголовок не нужен, и мы можем
скрыть его с помощью метода setHeaderHidden(), передав в этот метод false
QTreeView *view = new QTreeView(widget); view ->setHeaderHidden(true); // скрываем заголовок view->setModel(model);