Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

[Предыдущая: Программирование Модель/Представление] [Содержание] [Следующая: Классы Моделей]

Использование Моделей и Представлений

Введение

Qt предоставляет две стандартные модели: QStandardItemModel и QDirModel. QStandardItemModel - это многоцелевая модель, которая может использоваться для представления различных структур данных в виде списка, таблицы или дерева. Данная модель также обрабатывает элементы данных. QDirModel - это модель, которая обрабатывает информацию о содержимом директории. Как результат, она не содержит самих элементов данных, а просто представляет файлы и директории локальной файловой системы.

QDirModel предоставляет готовую к использованию и подходящую для экспериментов модель, которая легко настраивается для работы с существующими данными. На примере этой модели, мы можем показать, как настраивать модель для использования с готовыми представлениями и как управлять данными с помощью модельных индексов.

Использование Представлений с Существующими Моделями

Наиболее подходящими для использования с QDirModel являются классы QListView и QTreeView. Нижеприведенный пример отображает содержимое директории в виде дерева и его-же в виде списка. Управление выбором элементов осуществляется так, что они подствечиваются в обоих представлениях.

Мы подготавливаем к использованию QDirModel и создаем представления для отображения содержимого директории. Здесь показан самый простой способ использования модели. Создание и использование модели выполняются в единственной функции main():

    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QSplitter *splitter = new QSplitter;

        QDirModel *model = new QDirModel;

Модель настроена для использования данных из директории по умолчанию. Мы создаем два представления для отображения двумя различными способами элементов, предоставляемых моделью:

        QTreeView *tree = new QTreeView(splitter);
        tree->setModel(model);
        tree->setRootIndex(model->index(QDir::currentPath()));

        QListView *list = new QListView(splitter);
        list->setModel(model);
        list->setRootIndex(model->index(QDir::currentPath()));

Представления создаются также, как и другие виджеты. Настройка представления для отображения элементов модели производится просто вызовом функции setModel() с моделью директории, переданной в качестве аргумента. Вызов setRootIndex() сообщает представлению, данные какой директории следует отобразить, передав модельный индекс, полученный от модели директории.

Функция index(), используемая в данном случае, уникальна для QDirModel; мы передаем ей в качестве параметра директорию, и она возвращает модельный индекс. Модельные индексы обсуждаются в главе Классы Моделей.

Оставшаяся часть функции лишь отображает представления на виджете и запускает цикл обработки сообщений приложения:

        splitter->setWindowTitle("Two views onto the same directory model");
        splitter->show();
        return app.exec();
    }

В вышеприведенном примере мы не упомянули обработку выбора элементов пользователем. Эта тема более подробна раскрыта в главе Обработка Выбора в Представлении Элементов. До ознакомления с обработкой выбора, Вам будет полезно прочитать следующую главу и описание концепций, используемых в структуре модель/представление.

[Предыдущая: Программирование Модель/Представление] [Содержание] [Следующая: Классы Моделей]


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz