QT Creator модель — представление.

Начинаю изучать QT Creator по книге Макса Шлее QT 5.10 Профессиональное программирование на C++.

Появилось желание изучить кросплатформенную библиотеку Qt. Здесь буду выкладывать свои попытки разобраться с материалом. Изучение буду проводить в свободном порядке. У меня уже есть базовые знания по C++, поэтому начну сразу с интересной для меня темы «Интервью, или модель — представление».

Задача — вывести одни и те же данные в трёх различных пердставлениях(TreeView, ListView, TableVeiw).

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtWidgets>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

//объявляем новую модель данных
QStringListModel *model= new QStringListModel(this);
//добавляем данные в созданную модель
model->setStringList(QStringList()<<"Элемент1"<<"Элемент2"<<"Элемент3");
//каждому элементу представления присваиваем созданную модель данных
ui->treeView->setModel(model);
ui->listView->setModel(model);
ui->tableView->setModel(model);

/* следующий код создаёт общую модель для выделения элементов
 * если мы выделим какой - либо элемент в одном из представлений,
 * он автоматически выделится в остальных представлениях
*/
QItemSelectionModel *selection = new QItemSelectionModel(model);
ui->listView->setSelectionModel(selection);
ui->treeView->setSelectionModel(selection);
ui->tableView->setSelectionModel(selection);

// программный выбор одного из элементов модели(в нашем случае вторая строка)
QModelIndex index = model->index(1,0); //находим индекс второй строки
selection->select(index,QItemSelectionModel::Select);//выделяем соответствующую строку
}

MainWindow::~MainWindow()
{
delete ui;
}

Добавить комментарий

Закрыть меню