crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 7:07