Qt и COM

2 октября, 2011 | Раздел: Интересное

Как, наверное, многие знают, Qt – это кросс – платформенный инструментарий для разработки программного обеспечения. Он более известен как инструмент для разработки пользовательского интерфейса. Хотя у Qt гораздо более широкие возможности. Список компонентов легко найти в интернете. Одним из ключевых особенностей Qt является возможность легко переносить и запускать написанные приложения в большинстве современных операционных систем, включая Linux.

Спросите “причем тут COM”? При разработке приложений с графическим интерфейсом пользователя под Windows часто используют связку MFC + COM. Но учитывая растущую популярность Linux как операционной системы, то можно предположить, что в будущем большая часть программного обеспечения будет кросс — платформенное. MFC зависит от языка разработки и платформы. Для кросс – платформенных разработок MFC уже не подойдет. Да и вообще давно устарел. Многим компаниям приходиться его серьезно совершенствовать или разрабатывать собственные решения.

Технология COM же не зависит от языка разработки. А что же с зависимостью от платформы? На самом деле технология COM вполне могла не зависеть и от платформы. Но так как эта технология была разработана компанией Microsoft, то и закрепилась пока исключительно на операционных системах Windows. Но все же существуют технологии, основанные на COM, которые работают и по Linux. Например, OPC. Дальнейшие рассуждения о платформо — независимости COM оставлю за приделами этой статьи.

Вернемся к Windows. Не редко встречаются задачи для решения, которых нужно написать приложение с графическим интерфейсом пользователя использующее уже имеющиеся COM – компоненты. Предлагаю для этих целей использовать Qt, который идеально для этого подходит. А устаревший MFC выкинем на свалку.

Допустим, что у вас в операционной системе уже есть зарегистрированный COM – компонент. А как же использовать COM – компоненты в Qt приложениях?


1. После создания нового проекта в pro – файле нужно прописать строчку CONFIG += qaxcontainer.
2. Подключить компонент Qt для работы с ActiveX. Для этого нужно написать строчку #include <QAxObject>.
3. Подключить заголовочный файл с описанием COM-интерфейса: #include «IMyComponentName.h»
4. Объявить указатель на объект класса QAxObject. Например: QAxObject *object;
5. Объявить указатель на объект интерфейса: IMyComponentName *pMyComponentName;
6. Зная имя компонента выделить память под объект класса QAxObject: object = new QAxObject(«MyComponentName.Component.1»);
7. Запросить интерфейс от компонента: HRESULT hr = object->queryInterface(IID_IMyComponentName, (LPVOID*)&amp;pMyComponentName);

Вот и все. С помощью указателя pMyComponentName вы можете пользоваться любыми методами из интерфейса IMyComponentName.

Оставьте комментарий, нам важно Ваше мнение: