Выделение элемента, как часть технологии «интервью»

   
На этом шаге рассмотрим понятие "выделения элемента", как части технологии "интервью".

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

   
Управление выделением осуществляется при помощи специальной модели, реализованной в классе QItemSelectionModel (рис. 1).


Рис.1. Класс выделения QItemSelectionModel

   
Для получения модели выделения элементов, установленной в представлении, нужно вызвать метод QAbstractItemView:: selectionModel(), а установить новую модель можно с помощью метода QAbstractItemView::setSelectionModel().

   
Программа, окно которой показано на рис. 2, выполняет разделение выделения элементов между тремя представлениями. Выделение элемента в одном из представлений приведет к выделению этого же элемента и в остальных представлениях.


Рис.2. Демонстрация разделения выделения элементов между представлениями

   
Рассмотрим часть кода приложения:

//создаем модель списка строк (объект model),
QStringListModel model;
//которую инициализируем тремя элементами
//каждый элемент является строкой
model.setStringList(QStringList() << "Элемент 1" << "Элемент 2" << "Элемент 3");
//создаем три разных представления (указатели pTreeView,
//pListView и pTableView) и устанавливаем в них нашу модель,
//вызывая метод setModel()
QTreeView* pTreeView = new QTreeView;
pTreeView->setModel(&model);
QListView* pListView = new QListView;
pListView->setModel(&model);
QTableView* pTableView = new QTableView;
pTableView->setModel(&model);
//создаем модель выделения (объект класса QItemSelectionModel)
//при создании этот объект инициализируется оригинальной моделью (объект model)
QItemSelectionModel selection(&model);
//модель выделения устанавливается вызовом метода
//setSelectionModel() во всех трех объектах представления
pTreeView->setSelectionModel(&selection);
pListView->setSelectionModel(&selection);
pTableView->setSelectionModel(&selection);

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



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

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