Создание динамической библиотеки

Создание динамической библиотеки Следующий пример демонстрирует создание динамической библиотеки, содержащей только одну функцию. 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(). В противном случае будет […]