Начинаю изучать QT Creator по книге Макса Шлее QT 5.10 Профессиональное программирование на C++.
Появилось желание изучить кросплатформенную библиотеку Qt. Здесь буду выкладывать свои попытки разобраться с материалом. Изучение буду проводить в свободном порядке. У меня уже есть базовые знания по C++, поэтому начну сразу с интересной для меня темы "Интервью, или модель - представление".
Задача - вывести одни и те же данные в трёх различных пердставлениях(TreeView, ListView, TableVeiw).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#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; } |