Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4]Не прохлжит emit из boost потока в Qt поток, не передает в параметрах QT типы 
V
    Опции темы
ppopov
Дата 26.9.2011, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 17.2.2010
Где: Тюмень

Репутация: нет
Всего: нет



Суть такова. 
1) В главном qt потоке(mainClass) соединяем сигнал и слот двух объектов классов ASignal и BSlot, myEvent(QMap<int,QModelIndex>)
2) connect проходит
3) Существует некий объект M который создаёт boost поток из которого вызывается callMethod класса ASignal
4) callMethod вызывает внутри себя emit myEvent(QMap<int,QModelIndex>)
5) получаю такую вот в дебаг штуку
user posted image

Такого рода ошибки у меня были когда я создавал свой класс и недорегистрировал его в QMetaType.
Получается что в отщепленном бустовском потоке не регистрируются стандартные QT типы.
Как можно зарегать в QMetaType все стандартные типы QT из бустовского потока.
что-то типа qRegisterMetaType для всех основных классов qt

ПС.Переписывать код под qthread не имею пока возможности.

Это сообщение отредактировал(а) ppopov - 26.9.2011, 13:39
PM MAIL ICQ   Вверх
bsa
Дата 26.9.2011, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



По-моему, все нестандартные типы (QMap<что-то, что-то> к ним относится) нужно регистрировать вручную.
PM   Вверх
ppopov
Дата 26.9.2011, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 17.2.2010
Где: Тюмень

Репутация: нет
Всего: нет



Цитата(bsa @ 26.9.2011,  16:33)
По-моему, все нестандартные типы (QMap<что-то, что-то> к ним относится) нужно регистрировать вручную.

QMap и QModelIndex - это стандартные типы qt, int - простой тип. Все это умеет пересылать. 
Вот тут пишут http://www.qtcentre.org/threads/8926-QObje...ype-QModelIndex
You should not touch GUI in a worker thread. The GUI classes, notably QWidget and all its subclasses, are not reentrant. They can only be used from the main thread. QModelIndex is not registered because it should not be passed as a parameter in queued signals.
Видать придется перпроектировать эту часть системы. :-(
PM MAIL ICQ   Вверх
ppopov
Дата 27.9.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 17.2.2010
Где: Тюмень

Репутация: нет
Всего: нет



Ну вот тут ответ на почти все мои вопросы
http://developer.qt.nokia.com/wiki/Threads...Objects_Russian
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.