![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
krasniy |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 7.10.2010 Пользователь №: 2087 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Суть в том что пытаюсь вызвать в QThread объект класса QAxWidget, проект собирается, но при запуске в отладочную консоль вываливается ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1233 поменять QAxWidget на QAxObject не могу, тогда не вызывается ActiveX элемент!!! Подскажите как быть!
|
|
|
kwisp |
![]()
Сообщение
#2
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
krasniy,
боюсь никак. всё гуи должно быть в одном потоке причем в главном. |
|
|
PAFOS |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Можно вызвать метод виджета из второго потока, но в этом случае метод выполнится в главном потоке
Если такое положение дел устроит тогда три варианта могу предложить: 1. Сигнал - Слот ( Если сигнал вызывается из второстепенного потока, в слот главного потока, то вызов помещается в очередь событий) 2. используй QMetaObject::invokeMethod( widget, "methodName", ..., Qt::QueuedConnection ) Подробное описание см. в документации Не забудь указать в параметре Qt::QueuedConnection, что превратит вызов в событие 3. Создать класс события и послать его виджету, в которому предусмотреть его обработку. послать сообщение можно через QCoreApplication::postEvent(object, new SomEvent()), причем именно postEvent а не sendEvent)) P.S. любой это этих методов сразу же вернет управление, не дожидаясь результатов выполнения вызова |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 1.2.2023, 5:32 |