Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Уровень драйверов




Подключение QtSQL к проекту

Небольшой пример использования сигналов и слотов

Описание класса, наследуемого от QObject может выглядеть вот так:

1. #include <QObject>

2. class Counter: public QObject

3. {

4. Q_OBJECT

5. public:

6. Counter() { m_value = 0; }

7. int value() const { return m_value; }

8. public slots:

9. void setValue(int value);

10. signals:

11. void valueChanged(int newValue)

12. private:

13. int m_value;

14. };

 

Класс, наследованный от QObject, имеет то же самое внутреннее состояние, что и обычный класс, и обеспечивает открытые методы для доступа к этому состоянию, но дополнительно у него есть поддержка для использования сигналов и слотов. Этот класс может сообщить внешнему миру что его состояние изменилось выработав сигнал valueChanged() и у него есть слот, в который другие объекты могут посылать сигналы.

Слоты реализуются программистом. · Возможная реализация слота Counter::setValue() выглядит следующим образом:

1. void Counter::setValue(int value)

2. {

3. if (value!= m_value) {

4. m_value = value;

5. emit valueChanged(value);

6. }

7. }

 

Ключевое слово emit вырабатывает сигнал valueChanged() объекта с новым значением в качестве аргумента.

В следующем примере мы создаем два объекта типа Counter и соединяем сигнал valueChanged() первого со слотом setValue() второго используя статическую функцию QObject::connect():

1. Counter a, b;

2. QObject::connect(&a, SIGNAL(valueChanged(int)),

3. &b, SLOT(setValue(int)));

4. a.setValue(12); // a.value() == 12, b.value() == 12

5. b.setValue(48); // a.value() == 12, b.value() == 48

·

2.3.6 Литература по Qt

Макс Шлее "Qt4 Профессиональное программирование на C++";

http://doc.qt.io/

·

2.4 Модуль QtSQL

Как уже упомянулось выше, в Qt есть отдельный модуль, предоставляющий удобный «сервис» использования БД – QtSql.

Для его использования добавить следующую строку в.pro файл:

Qt += sql

Чтобы использовать модуль Qt Sql, а для работы с ее классами, нужно включать одноименный заголовок.

#include <Qt Sql>

2.4.2 Уровни Qt Sql

·Классы Qt Sql разделены на три уровня:

1. Уровень драйверов;

2. Программный уровень;

3. Уровень пользовательского интерфейса.·

Уровень драйверов актуально использовать при создании собственного драйвера БД. Этот слой обеспечивает низкоуровневый мост между конкретными базами данных и программным уровнем. К уровню драйверов относятся классы для получения данных на физическом уровне:

- QSqlDriver

- QSqlDriverCreator<T*>

- QSqlDriverCreatorBase,

- QSqlDriverPlugin

- QSqlResult

QSqlDriver является абстрактным базовым классом, предназначенным для доступа к специфичным БД. Важно, что класс не должен быть использован «прямо», взамен нужно воспользоваться QSqlDatabase (программный уровень). Хотя, если вы хотите создать свой собственный драйвер Qt SQL, то можете наследовать от QSqlDriver и реализовать чисто виртуальные, и нужные вам виртуальные функции.

QSqlResult предоставляет абстрактный интерфейс для доступа к данным специфичных БД.

QSqlCreatorBase – базовый класс для фабрик SQL драйверов. Чтобы возвращать экземпляр специфичного поскласса класса QSqlDriver, который вы хотите предоставить, нужно переопределить метод QSqlCreatorBase::createObject () в потомках класса.

QSqlDatabase несет ответственность за загрузку и управление плагинов драйверов баз данных. Когда БД добавлена (это делается функцией QSqlDatabase::addDatabase()), необходимый плагин драйвера загружается (используя QSqlDriverPlugin).

QSqlDriverPlugin предоставляет собой абстрактный базовый класс для пользовательских QSqlDriver плагинов.·

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 544; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.