Вызов в другом потоке QAxWidget |
Здравствуйте, гость ( Вход | Регистрация )
Вызов в другом потоке QAxWidget |
krasniy |
19.1.2011, 14:41
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 7.10.2010 Пользователь №: 2087 Спасибо сказали: 0 раз(а) Репутация: 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 |
19.1.2011, 15:11
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
krasniy,
боюсь никак. всё гуи должно быть в одном потоке причем в главном. |
|
|
PAFOS |
19.1.2011, 17:51
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Можно вызвать метод виджета из второго потока, но в этом случае метод выполнится в главном потоке
Если такое положение дел устроит тогда три варианта могу предложить: 1. Сигнал - Слот ( Если сигнал вызывается из второстепенного потока, в слот главного потока, то вызов помещается в очередь событий) 2. используй QMetaObject::invokeMethod( widget, "methodName", ..., Qt::QueuedConnection ) Подробное описание см. в документации Не забудь указать в параметре Qt::QueuedConnection, что превратит вызов в событие 3. Создать класс события и послать его виджету, в которому предусмотреть его обработку. послать сообщение можно через QCoreApplication::postEvent(object, new SomEvent()), причем именно postEvent а не sendEvent)) P.S. любой это этих методов сразу же вернет управление, не дожидаясь результатов выполнения вызова |
|
|
Текстовая версия | Сейчас: 26.12.2024, 13:59 |