Russian Qt Forum
Май 29, 2024, 13:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов GUI-функций из сценария, выполняющегося в отдельном потоке  (Прочитано 4454 раз)
Sasha
Гость
« : Декабрь 10, 2013, 12:35 »

Здравствуйте,

Скрипт выполняется в отдельном потоке, но он должен вызывать функции виджетов, но возникли проблеммы. В частности я попытался изменить иконку на кнопке и получил окошко с информацией типа того, что невозможно послать сигнал объекту, созданному в другом потоке.
Как в этом случае поступать?
Пока я сделал вместо 1-й ф-ии 3: сигнал и 2 слота (private и public) примерно с одинаковыми аргументами. Сигнал соединён с private-слотом при помощи QueuedConnection, а public-слот делает emit сигнала. Но это же кошмар, если каждую ф-ю так размножать.
Может быть есть аналог QueuedConnection для скриптов? В документации я не увидел таких параметров даже для скриптовой ф-ии connect, не говоря уже о вызове функций-слотов из скриптов.
Записан
Bepec
Гость
« Ответ #1 : Декабрь 10, 2013, 16:52 »

Сигнал послать можно, изменять UI напрямую нельзя. Это основы Qt.

По поводу скриптов ничего не скажу.

Записан
Susenin
Новичок

Offline Offline

Сообщений: 35


Просмотр профиля
« Ответ #2 : Декабрь 28, 2013, 01:49 »

Можно вызвать слот из другого потока через очередь сообщений с помощью QMetaObject::invokeMethod(...) http://qt-project.org/doc/qt-4.8/qmetaobject.html#invokeMethod
Записан
Sasha
Гость
« Ответ #3 : Январь 28, 2014, 20:57 »

Можно вызвать слот из другого потока через очередь сообщений с помощью QMetaObject::invokeMethod(...) http://qt-project.org/doc/qt-4.8/qmetaobject.html#invokeMethod
Спасибо, пока использую этот метод. Только всё-равно приходится огород городить и как минимум добавлять одну дополнительную проксифункцию на каждую необходимую функцию-слот, которая будет преобразовывать параметры переданные скриптом в параметры этой функции-слота.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.