Qt-C++ - Урок 004.QSqlTableModel или Как да представим таблица от база данни в Qt?
За да представи информацията, съдържаща се в таблица на база данни, рамката на Qt използва няколко класа:
- QSqlQueryModel - модел, който генерира таблица чрез посочване на необработена SQL заявка. Може да бъде полезно при създаване на особено сложни филтри и компилиране на информация от различни таблици на бази данни. Повече за това в следващите уроци.
- QSqlTableModel - е предмет на нашата дискусия в тази статия. Модел, който генерира таблица по името на таблицата, която съществува в базата данни. От минусите може да се отбележи липсата на методи за свързване на връзки с други таблици, за да се заменят стойности в полета от други таблици по ID.
- QSqlRelationalTableModel - клас, който ви позволява да създадете таблица с релации от други таблици, заменяйки стойностите на таблицата, която този модел представлява, според идентификатора на записите, съдържащи се в други таблици.
За удобна работа с информация, която се намира в базата данни, се използва допълнителен клас, който е частично дизайнерски шаблон"Фасада".
Кодът е написан в QtCreator 3.3.1, базиран на Qt 5.4.1.
Структура на проекта за QSqlTableModel
Проектът е създаден като Qt Widgets приложение, което създава следните файлове:
- DataBase.pro - профил;
- mainwindow.h - заглавен файл на главния прозорец на приложението;
- mainwindow.cpp - изходен код на прозорец;
- main.cpp - основният изходен файл, от който стартира приложението;
- mainwindow.ui - форма на главния прозорец на приложението;
- database.h - заглавен файл на спомагателен клас, използван за работа с информация, която се поставя в базата данни;
- database.cpp - спомагателен изходен файлклас, използван за работа с информация, която е поставена в базата данни;
Забележка. Създавам по-голямата част от интерфейса в дизайнера, за да не претрупвам логиката на основния код с ненужна информация. Всъщност това е просто въпрос на вкус и навик.
mainwindow.ui
Създаваме формуляр за тестово приложение, което ще използва обектQTableView, нареченtableView от графичния интерфейс.
DataBase.pro
В профила на проекта трябва да добавите директива, която декларира използването на SQL библиотеки.
Файлът се използва в проекта, като се създава по подразбиране.
mainwindow.h
mainwindow.cpp
Изходният файл, в който се осъществява цялото основно взаимодействие с модела за представяне на данни.
В заглавния файл на класаDataBase трябва да посочите директивите за имена на таблици и колони на таблици за удобство при по-нататъшна работа. Както и методите, които се използват за взаимодействие с базата данни, както и предоставянето на интерфейси за това взаимодействие със слоевете от по-високо ниво на приложението.
база данни.cpp
Изходният файл на помощен клас, който се използва за работа с информация, която е поставена в базата данни. В този случай формирането на SQL заявки е максимално скрито в този клас, за да се намали броят на връзките в програмния код. Такава практика в самото начало може да помогне на начинаещия да внуши способността незабавно да пише код, в който различните класове са отделени един от друг възможно най-много, което е един от аспектите на ООП.
Резултатът трябва да бъде таблица със следната форма с данните, които са били подготвени и вмъкнати в дизайнера на главния прозорец на приложението.