Qt:Документация 4.3.2/model-view-using
Материал из Wiki.crossplatform.ru
Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
[Предыдущая: Введение в программирование модель/представление ] [ Содержание ] [Следующая: Классы моделей ]
[править] Использование моделей и представлений
[править] Введение
Qt предоставляет две стандартные модели: QStandardItemModel и QDirModel. QStandardItemModel - это многоцелевая модель, которая может использоваться для представления различных структур данных в виде списка, таблицы или дерева. Данная модель также обрабатывает элементы данных. QDirModel - это модель, которая обрабатывает информацию о содержимом директории. Как результат, она не содержит самих элементов данных, а просто представляет файлы и директории локальной файловой системы.
QDirModel предоставляет готовую к использованию и подходящую для экспериментов модель, которая легко настраивается для работы с существующими данными. На примере этой модели, мы можем показать, как настраивать модель для использования с готовыми представлениями и как управлять данными с помощью модельных индексов.
[править] Использование представлений с существующей моделью
QListView и QTreeView являются наиболее подходящими для использования с QDirModel. Нижеприведенный пример отображает содержимое директории в виде дерева и его же в виде списка. Представления разделяют пользовательский выбор элементов, так что они подсвечиваются в обоих представлениях.
Мы подготавливаем к использованию 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 © 2007 Trolltech | Trademarks | Qt 4.3.2
|