crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Вызов в другом потоке QAxWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
PAFOS Дата 19.1.2011, 17:51
  Можно вызвать метод виджета из второго потока, но в этом случае метод выполнится в главном потоке

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

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

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

P.S. любой это этих методов сразу же вернет управление, не дожидаясь результатов выполнения вызова
kwisp Дата 19.1.2011, 15:11
  krasniy,
боюсь никак. всё гуи должно быть в одном потоке причем в главном.
krasniy Дата 19.1.2011, 14:41
  Суть в том что пытаюсь вызвать в QThread объект класса QAxWidget, проект собирается, но при запуске в отладочную консоль вываливается ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1233 поменять QAxWidget на QAxObject не могу, тогда не вызывается ActiveX элемент!!! Подскажите как быть!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 5.12.2022, 3:17