На этом шаге рассмотрим организацию иерархических данных.
Каждая ячейка в таблице может иметь дочерние таблицы. И, думая об иерархиях, мы должны не забыть об иерархиях таблиц. Давайте воспользуемся интерфейсом модели QStandardItemModel для создания нашей иерархии и отобразим ее (рис. 1).
Рис.1. Отображение иерархических данных
Схема использования класса QStandardItemModel очень проста. Сначала необходимо создать его объект, а потом методом setData() установить данные для каждого элемента. Впоследствии эти данные можно будет получать методом data().
Рассмотрим код программы, результат работы которой представлен на рисунке 1.
//создаем модель, представляющую собой таблицу из пяти строк и трех столбцов QStandardItemModel model(5, 3); for (int nTopRow = 0; nTopRow < 5; ++nTopRow) { //получаем текущий индекс с помощью метода index() QModelIndex index = model.index(nTopRow, 0); //задаем данные для элемента model.setData(index, "Элемент" + QString::number(nTopRow + 1)); //вставляем, по текущему индексу, подтаблицу с четырьмя строками //и тремя столбцами при помощи методов insertRows() и insertColumns() model.insertRows(0, 4, index); model.insertColumns(0, 3, index); for (int nRow = 0; nRow < 4; ++nRow) { for (int nCol = 0; nCol < 3; ++nCol) { QString strPos = QString("%1,%2").arg(nRow+1).arg(nCol+1); //вызовом метода setData() ячейки подтаблицы заполняются данными model.setData(model.index(nRow, nCol, index), strPos); } } } QTreeView treeView; treeView.setModel(&model); treeView.show();
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг