Название: Вызов GUI-функций из сценария, выполняющегося в отдельном потоке Отправлено: Sasha от Декабрь 10, 2013, 12:35 Здравствуйте,
Скрипт выполняется в отдельном потоке, но он должен вызывать функции виджетов, но возникли проблеммы. В частности я попытался изменить иконку на кнопке и получил окошко с информацией типа того, что невозможно послать сигнал объекту, созданному в другом потоке. Как в этом случае поступать? Пока я сделал вместо 1-й ф-ии 3: сигнал и 2 слота (private и public) примерно с одинаковыми аргументами. Сигнал соединён с private-слотом при помощи QueuedConnection, а public-слот делает emit сигнала. Но это же кошмар, если каждую ф-ю так размножать. Может быть есть аналог QueuedConnection для скриптов? В документации я не увидел таких параметров даже для скриптовой ф-ии connect, не говоря уже о вызове функций-слотов из скриптов. Название: Re: Вызов GUI-функций из сценария, выполняющегося в отдельном потоке Отправлено: Bepec от Декабрь 10, 2013, 16:52 Сигнал послать можно, изменять UI напрямую нельзя. Это основы Qt.
По поводу скриптов ничего не скажу. Название: Re: Вызов GUI-функций из сценария, выполняющегося в отдельном потоке Отправлено: Susenin от Декабрь 28, 2013, 01:49 Можно вызвать слот из другого потока через очередь сообщений с помощью QMetaObject::invokeMethod(...) http://qt-project.org/doc/qt-4.8/qmetaobject.html#invokeMethod (http://qt-project.org/doc/qt-4.8/qmetaobject.html#invokeMethod)
Название: Re: Вызов GUI-функций из сценария, выполняющегося в отдельном потоке Отправлено: Sasha от Январь 28, 2014, 20:57 Можно вызвать слот из другого потока через очередь сообщений с помощью QMetaObject::invokeMethod(...) http://qt-project.org/doc/qt-4.8/qmetaobject.html#invokeMethod (http://qt-project.org/doc/qt-4.8/qmetaobject.html#invokeMethod) Спасибо, пока использую этот метод. Только всё-равно приходится огород городить и как минимум добавлять одну дополнительную проксифункцию на каждую необходимую функцию-слот, которая будет преобразовывать параметры переданные скриптом в параметры этой функции-слота. |