QTreeView

Последнее обновление: 12.01.2024

Класс 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. Затем в каждый из этих элементов для примера добавляются по два других элемента. В итоге у нас получится следующее дерево:

QTreeView и иерархические данные в Qt

По умолчанию отображаются только узлы, которые добавлены в корневой узел. Надимая на маркер-треугольник, мы можем раскрыть сожержимое узлов. Но как видно из скриншота, в древовидном представлении по умолчанию отображается заголовок. По умолчанию это новер строки - число 1. Но как правило, заголовок не нужен, и мы можем скрыть его с помощью метода setHeaderHidden(), передав в этот метод false

QTreeView *view = new QTreeView(widget);
view ->setHeaderHidden(true);    // скрываем заголовок
view->setModel(model);
Скрытие заголовка в QTreeView и иерархические данные в Qt
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850