Альтернативный подход заключается в динамической загрузке библиотеки по мере необходимости и затем разрешении ее символов, которые будут нами использоваться. Qt предоставляет класс
Часто можно расширять функциональные возможности современных приложений с графическим пользовательским интерфейсом за счет применения подключаемых модулей. Подключаемый модуль (plugin) — это динамическая библиотека, которая реализует специальный интерфейс для обеспечения дополнительной функциональности. Например, в главе 5 мы создали подключаемый модуль для интеграции пользовательского виджета в
Qt распознает свой собственный набор интерфейсов подключаемых модулей, относящихся к различным областям, включая форматы изображений, драйверы баз данных, стили виджетов, текстовые кодировки и условия доступа. Первый раздел данной главы показывает, как можно расширить возможности Qt с помощью подключаемых модулей.
Кроме того, можно создавать подключаемые модули, предназначенные для конкретных Qt—приложений. Писать такие подключаемые модули в Qt достаточно просто с использованием фреймворка Qt для подключаемых модулей, который повышает безопасность и удобство применения класса
Расширение Qt с помощью подключаемых модулей
Qt можно расширять, используя различные типы подключаемых модулей, среди которых наиболее распространенными являются драйверы баз данных, форматы изображений, стили и текстовые кодировки. Каждый тип подключаемых модулей обычно требует наличия по крайней мере двух классов: класса—оболочки, который реализует общие функции программного интерфейса подключаемых модулей, и одного или более классов—обработчиков, которые реализуют программный интерфейс для конкретного типа подключаемых модулей. Обработчики вызываются из класса—оболочки.
Ниже приведен список Qt—классов подключаемых модулей и обработчиков, исключая Qtopia Core (рис. 19.1):
• QAccessibleBridgePlugin — QAccessibleBridge,
• QAccessiblePlugin — QAccessibleIntertace,
• QIconEnginePlugin — QIconEngine,
• QImageIOPlugin — QImageIOHandler,
• QInputContextPlugin — QInputContext,
• QPictureFormatPlugin — нет обработчика,
• QSqlDriverPlugin — QSqlDriver,
• QStylePlugin — QStyle,
• QTextCodecPlugin — QTextCodec.
В демонстрационных целях мы реализуем подключаемый модуль, способный считывать в Windows монохромные файлы курсоров (файлы
Новые классы—оболочки подключаемых модулей должны быть подклассом
01 class CursorPlugin : public QImageIOPlugin
02 {
03 public:
04 QStringList keys() const;
05 Capabilities capabilities(QIODevice *device,
06 const QByteArray &format) const;
07 QImageIOHandler *create(QIODevice *device,
08 const QByteArray &format) const;
09 };
Функция
01 QStringList CursorPlugin::keys() const
02 {
03 return QStringList() << "cur";
04 }