Иерархические данные

   
На этом шаге рассмотрим организацию иерархических данных.

   
Каждая ячейка в таблице может иметь дочерние таблицы. И, думая об иерархиях, мы должны не забыть об иерархиях таблиц. Давайте воспользуемся интерфейсом модели 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();

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий