Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вызов в другом потоке QAxWidget
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
krasniy
Суть в том что пытаюсь вызвать в QThread объект класса QAxWidget, проект собирается, но при запуске в отладочную консоль вываливается ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1233 поменять QAxWidget на QAxObject не могу, тогда не вызывается ActiveX элемент!!! Подскажите как быть!
kwisp
krasniy,
боюсь никак. всё гуи должно быть в одном потоке причем в главном.
PAFOS
Можно вызвать метод виджета из второго потока, но в этом случае метод выполнится в главном потоке

Если такое положение дел устроит тогда три варианта могу предложить:
1. Сигнал - Слот ( Если сигнал вызывается из второстепенного потока, в слот главного потока, то вызов помещается в очередь событий)

2. используй QMetaObject::invokeMethod( widget, "methodName", ..., Qt::QueuedConnection )
Подробное описание см. в документации
Не забудь указать в параметре Qt::QueuedConnection, что превратит вызов в событие

3. Создать класс события и послать его виджету, в которому предусмотреть его обработку.
послать сообщение можно через QCoreApplication::postEvent(object, new SomEvent()), причем именно postEvent а не sendEvent))

P.S. любой это этих методов сразу же вернет управление, не дожидаясь результатов выполнения вызова
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2022 IPS, Inc.