21 апреля 2014 г.

Установка драйвера для работы с базой данных MySQL

    Вы уже познакомились с Qt, знаете что такое сигнал и слот, написали уже несколько программ, и вот решили подключиться к запущенной и настроенной БД MySQL, и обнаружили что "из коробки" такая возможность отсутствует, а в Qt по умолчанию имеется поддержка только:
    Примечание:
    1. Это можно узнать вызвав статический метод QSqlDatabase::drivers()или запустив этот проект (взят отсюда).
    2. Для библиотеки Qt5.x.x будет другой результат (например, для Qt5.2.1 он такой), хотя просто так работать все равно не будет.


    Следовательно для работы с MySQL надо раздобыть где-нибудь этот драйвер. Варианта два:
1. Собрать самому.
2. Использовать уже готовый.
    Примечание:
    Для библиотеки Qt5.x.x требуется лишь скопировать библиотечный файл по необходимому пути (см. пункт 9).


    Если самостоятельно собирать их нет желания, то переходим к концу пункта 7.
    Я же опишу полный процесс компиляции драйвера MySQL и выложу результаты (готовые драйвера).

Установка и настройка библиотеки Qt 4.8.5 и QtCreator 3 на Windows с компилятором MinGW

    Как оказалось, скачав лишь Qt libraries 4.8.5 for Windows (minGW 4.4, 317 MB), создать свою программу на Qt не удастся. Помимо этого файла, в первую очередь, нужен рабочий компилятор (для данной версии это MinGW не ниже 4.4), который придется устанавливать отдельно, и скачать уже готовый. Среда разработки (Qt Creator 3.1.0 for Windows (68 MB)) оказалась поставляется вне библиотек Qt 4.8.5 и тоже требует отдельной установки. Ну и напоследок, если собираетесь запускать свою программу в отладчике по шагам (а я уверен, что рано или поздно придется это делать), то необходим еще и свой отладчик (GDB имеющийся в MinGW не подходит)
    А теперь обо всем по порядку.

Программирование на Qt

    Изучив более-менее C++, и научившись создавать простенькие (и не очень) консольные программы, я понял то, что на одних только консольных приложениях далеко не уедешь, и надо бы научиться создавать понятный и красивый графический интерфейс пользователя. Чтобы можно было бы стукнуть мышкой по кнопке в программе и она бы соответствующим образом отреагировала, отобразила бы какое-нибудь новое окошко или еще что-нибудь по круче.