Каталог решений - Внешняя Native API компонента совместно с функционалом фреймворка Qt

Внешняя Native API компонента совместно с функционалом фреймворка Qt

Внешняя Native API компонента совместно с функционалом фреймворка Qt

В наличии

В данном примере реализована интеграция внешней компоненты, написанной с использованием технологии Native API и фреймворка Qt.

Категория:

Описание

Фреймворк Qt позволяет добавить множество полезного функционала в Вашу внешнюю компоненту, например, QtMultimedia модуль предоставляет богатый набор функций, позволяющих использовать мультимедийные возможности платформы. QCamera — использование камер. Модуль работы с сетью QtNetwork предоставляет удобные как низкоуровневые сетевые концепции, так и высокоуровневые классы. Класс QTextToSpeech обеспечивает удобный доступ к механизмам синтеза речи по тексту. Также в фреймворке присутствует множество других классов, облегчающих работу программиста.

В данном примере реализована работа как с вышеперечисленными классами, так и работа с GUI фреймворка из динамической библиотеки. Для этого, в конструкторе наследника от абстрактного класса IComponentBase, в worker_thread потока, создаваемого функцией_beginthreadex с помощью QCoreApplication::setLibraryPaths, вначале, до создания объектов, устанавливается путь для нахождения необходимых библиотек фреймворка. Соответственно сама компонента и ее библиотеки должны находится по данному пути, затем инициализируется объект QApplication. Далее создаются остальные объекты.

unsigned __stdcall worker_thread(void* arg)
{
                if(!demoQtClass)
   {
                               int argc = 0;
                               char* argv = { strdup("hi") };
                               QStringList paths = QCoreApplication::libraryPaths();
                               paths.append("c:/QtDemoAddInNative");
                               QCoreApplication::setLibraryPaths(paths);
                               QApplication* appp;
                               appp = new QApplication(argc, &argv);
                               appp->setQuitOnLastWindowClosed(false);
                               demoQtClass = new QtWidgetsDemoClass;        
                               cameraWidget = new QtCameraWidget;
                               chatWidget = new QtChatWidget;
                               utils = new my_utils;                              
                               appp->exec();
                               _endthreadex(0);
   }

                return 0;
}

Затем с помощью механизма сигналов и слотов реализуются коммуникации между созданными объектами. Для нахождения библиотек фреймворка необходимо в Windows системную переменную Path также добавить каталог месторасположения библиотеки, в нашем случае это "c:\QtDemoAddInNative".

 

Path

 

Также для работы компоненты необходима установка распространяемого компонента Visual C++ Redistributable x86 или x64, в зависимости от разрядности компоненты. Также следует учесть разрядность компоненты и разрядность платформы 1с.

Описание компоненты.

После нажатия на кнопку "Подключить компоненту" в случаете ее успешного подключения, появляется соответствующее сообщение:

 

Установка компоненты

 

В системном трее появится иконка компоненты:

 

Трей

 

Окно программы позволяет взаимодействовать с 1С посредством генерации внешнего события. В ответ из 1С в процедуре "Внешнее событие" вызывается метод внешней компоненты "ОтправитьТекстВВиджет" который добавляет в форму текстового редактора внешней компоненты текст.

 

Главное окно

 

Команды "Воспроизвести звук", "Остановить" —  работают с классом QMediaPlayer фреймворка Qt.

По кнопке "Прочитать текст" с помощью класса QTextToSpeech происходит преобразование текста в речь. На компьютере должны быть установлены библиотека SAPI и голоса для синтезатора речи.

Модуль для работы с камерой использует класс QCamera, обеспечивающий интерфейс для системных устройств камеры. По кнопке в 1С "Получить фото" происходит преобразование типа QByteArray в двоичные данные с типом VTYPE_BLOB и возврат их в 1С.

 

Камера

 

Тест работы с e2eSoft VCam — эмулятор веб-камеры. По галочке "Отразить" можно зеркально отразить полученное фото.

 

Камера_1

 

Виджет чата — пример простого чата на основе QUdpSocket – позволяет принимать и отправлять сообщения как всем, так и выбранным адресатам.

 

Чат

 

Компиляция проекта проверялась в Visual Studio 2017 и в  Visual Studio 2019 под Windows 10.

Версия Qt — 5.15.2

Работа проверялась в Windows 10. Также компонента функционировала и на более ранних операционных системах, например Server 2008 R2.

 

Server2008

 

В архиве находится собранная 32-х разрядная версия со всеми библиотеками, конфигурация, а также исходные коды компоненты.

has been added to your cart:
Оформление заказа