
- •Аннотация к разделу
- •Теоритические принципы создания приложений бд
- •Основные задачи и сложности организации работы с бд
- •Программный (встроенный) sql
- •Статический sql
- •Динамический sql
- •Интерфейсы программирования приложений бд (api)
- •Интерфейс odbc
- •Механизм использования бд, применяемый в современных графических средствах разработки
- •Создание приложения, использующего бд Аннотация к подразделу
- •Настройка источников данных odbCвwindows
- •Базовые сведения о Qt
- •Введение
- •Модули Qt
- •Собственная система сборки Qt
- •Сигналы и слоты
- •Небольшой пример использования сигналов и слотов
- •Литература по Qt
- •Программный уровень
- •Уровень пользовательского интерфейса
- •Операции с бд
- •Соединение с бд
- •Выполнение запросов выборки и возврат результатов
- •Выполнение запросов вставки, обновления и удаления
- •Использование параметризованных запросов
- •Выполнение транзакций
- •Связь данных с пользовательским интерфейсом
- •Использование классов – моделей данных sql.
- •Отображение результата запроса выборки в таблице
- •Отображение и редактирование данных таблиц
- •Отображение и редактирование данных таблиц с использованием подстановки для внешних ключей
- •Связь элементов данных с обычными виджетами
- •Настройка собственной модели данных
Модули Qt
Библиотека разделена на несколько модулей, вот некоторые из них (для пятой версии):
QtCore – классы ядра библиотеки, используемые другими модулями;
QtGui – компоненты графического интерфейса;
QtWidgets– классы виджетов для создания граф. интерфейса пользователя.
QtMultimedia – классы, поддерживающие функциональность аудио, видео, радио и камеры;
QtNetwork – набор классов для сетевого программирования;
QtOpenGL – набор классов для работы с OpenGL;
QtSql – набор классов для работы с БД с использованием языка SQL.
QtScript – классы для работы с Qt Scripts (специальным скриптовым языком Qt, похожем наJavaScript);
QtXml – модуль для работы с XML, поддерживается SAX и DOM модели работы;
QtWebKit – модуль с элементами веб-браузера;
Qt Quick– модуль, предоставляющий декларативный фреймворк для создания динамичных, настраиваемых пользовательских интерфейсов.
Этот список модулей далеко не полный.
Собственная система сборки Qt
Библиотека использует собственную систему сборки, именуемую QMake.QMake– это специальная утилита, использующая файлы проекта с расширением «.pro», в которых собрана информация о том, какие файлы будут скомпилированы, по каким путям искать заголовочные файлы и много другой информации. Пример .proфайла:
TEMPLATE = app # тип проекта - приложение
TARGET = flipbox # имя исполняемого файла
QT += core gui widgets # используемые модули
# Пути поиска заголовочных файлов
INCLUDEPATH += "../../../include"
# Подключаемые библиотеки
LIBS += -L"../../../lib/Lib"
# Заголовочные файлы
HEADERS += \
mainwindow.h \
...
# Исходные файлы
SOURCES += \
mainwindow.cpp \
...
# Формы
FORMS += \
mainwindow.ui \
...
# Файлы ресурсов
RESOURCES += \
resources.qrc \
scripts.qrc
Сигналы и слоты
Отличительная особенность Qtот других библиотек – использованиеMeta Object Compiler(MOC) – предварительной системы обработки исходного кода (в общем-то, Qt – это библиотека не для чистого C++, а для его особого наречия, с которого и «переводит»MOCдля последующей компиляции любым стандартным C++ компилятором).MOCпозволяет во много раз увеличить мощь библиотек, вводя такие понятия, какслотыисигналы.
Сигналы и слоты используются для коммуникации между объектами. Механизм сигналов и слотов главная особенность Qt и вероятно та часть, которая отличаетcя от особенностей, предоставляемых другими фреймворками.
В программировании графического интерфейса, когда мы меняем один виджет, мы часто хотим что бы другой виджет получил об этом уведомление. В общем случае, мы хотим что бы объекты любого типа могла общаться с другими. Например, если пользователь нажимает кнопку Закрыть, мы вероятно хотим что бы была вызвана функция окна close().
Сигнал вырабатывается когда происходит определенное событие. Слот это функция, которая вызывается в ответ на определенный сигнал. Виджеты Qt имеют много предопределенных сигналов и слотов, но мы всегда можем сделать дочерний класс и добавить наши сигналы и слоты в нем.
Механизм сигналов и слотов типобезопасен. Сигнатура сигнала должна совпадать с сигнатурой слота-получателя.
Класс, который вырабатывает сигнал не знает и не заботится о том, какие слоты его получат. Механизм сигналов и слотов Qt гарантирует, что если мы подключим сигнал к слоту, слот будет вызван с параметрами сигнала в нужное время. Сигналы и слоты могут принимать любое число аргументов любого типа. Все классы, наследуемые от QObject или его дочерних классов (например, QWidget) могут содержать сигналы и слоты. Сигналы вырабатываются объектами когда они изменяют свое состояние так, что это может заинтересовать другие объекты. При этом он не знает и не заботится о том что у его сигнала может не быть получателя.
Мы можем подключать к одному слоту столько сигналов, сколько захотим, также один сигнал может быть подключен к стольким слотам, сколько необходимо (рисунок 0).
Рисунок 0 – Администратор источников данных ODBC. Диалог создания нового источника данных
Сигналы и слоты вместе составляют мощный механизм создания компонентов.