Создание динамической библиотеки
Создание динамической библиотеки Следующий пример демонстрирует создание динамической библиотеки, содержащей только одну функцию. TEMPLATE = lib DESTDIR = .. QT -= gui SOURCES = dynlib.cpp HEADERS = dynlib.h TARGET = dynlib Обратите внимание на файл проекта. Для создания динамической библиотеки нужно установить в секции TEMPLATE значение lib. Расположение готовой библиотеки будет на один уровень выше […]
Установление соединения с базой данных в Qt
Установление соединения с базой данных в Qt Для соединения с базой данных прежде всего нужно активизировать драйвер. для этого вызывается статический метод QSqlDatabase::addDatabase(). В него нужно передать строку, обозначающую идентификатор драйвера СУБД. Для того чтобы подключиться к базе данных, потребуется четыре следующих параметра: имя базы данных — передается в метод QSqlDatabase:: setDatabaseName(); имя пользователя, желающего […]
Совместное использование Qt с платформозависимыми API
Совместное использование Qt с платформозависимыми API Несмотря на то, что Qt предоставляет практически весь инструментарий, необходимый для реализации программ, иногда возникает необходимость в использовании технологий, связанных с конкретной платформой, или реализации кода низкого уровня. Прибегать к написанию платформозависимого кода нужно только в случаях острой необходимости. Помните, что если программа рассчитана на несколько платформ, то […]
Событие таймера QTimerEvent
Событие таймера QTimerEvent Каждый класс, унаследованный от QObject, содержит свои собственные встроенные таймеры. Вызов метода QObject::startTimer() производит запуск таймера. В качестве параметра ему передается интервал запуска в миллисекундах. Метод startTimer() возвращает идентификатор, необходимый для распознавания таймеров, используемых в объекте. По истечении установленного интервала запуска генерируется событие QTimerEvent, которое передается В метод timerEvent(). Вызвав метод QTimerEvent::timerId() […]
Сигнально-слотовые соединения
Сигнально-слотовые соединения Итак, мы можем взять сигнал объекта одного потока и соединить его со слотом объекта другого потока. Как мы уже знаем, соединение с помощью метода connect() предоставляет дополнительный параметр, обозначающий режим обработки и равный, по умолчанию, значению Qt::AutoConnection, которое соответствует автоматическому режиму. Как только происходит высылка сигнала, Qt проверяет — происходит связь в одном […]
Синхронизация
Синхронизация Основные сложности возникают тогда, когда потокам нужно совместно использовать одни и те же данные. Так как несколько потоков могут одновременно обращаться и записывать данные в одну область, то это может привести к нежелательным последствиям. Представьте себе такую ситуацию: один поток занимается вычислениями, используя значения какой-нибудь глобальной переменной, а в это время другой поток вдруг […]
Система помощи (Online Help)
Система помощи (Online Help) Большие приложения нуждаются в объемной системе помощи, подробно описывающей все функциональные возможности программы. {рисунок} Самый простой вариант — это предоставление пользователю специального навигатора, который будет открываться при нажатии соответствующего пункта меню Help (Помощь) или при нажатии на клавишу <F1>. Текст помощи может находиться в формате HTML, в котором, помимо текстовой, предоставляется […]
SDI- и MDI-приложения в Qt
SDI- и MDI-приложения в Qt Существует два типа приложений, базирующихся на документах. Первый тип — это SDI (Single Document Interface, однодокументный интерфейс), второй — MDI (Multiple Document Interface, многодокументный интерфейс). В SDI-приложениях рабочая область одновременно является окном приложения, а это значит, что невозможно открыть в одном и том же приложении сразу два документа. MDI-приложение предоставляет […]
Класс QTcpServer (server)
Использование класса QTcpServer для реализации сервера Для реализации сервера Qt предоставляет удобный класс QTcpServer, который предназначен для управления входящими TCP-соединениями. Программа, показанная на рисунке, является реализацией простого сервера, который принимает и подтверждает получение запросов клиентов. #include <QtGui> #include «MyServer.h» int main(int argc, char** argv) { QApplication app(argc, argv); MyServer server(2323); server.show(); return app.exec(); } Создается […]
Класс QTcpSocket (client)
Класс QTcpSocket для реализации клиента Для реализации клиента нужно создать объект класса QTcpSocket, а затем вызвать метод connectToHost(), передав в него первым параметром имя компьютера (или его IP-адрес), а вторым — номер порта сервера. Объект класса QTcpSocket сам попытается произвести установку связи с сервером и, в случае успеха, вышлет сигнал connected(). В противном случае будет […]