LINUX.ORG.RU

Свой класс в сигнале и Qt 5

 , ,


0

2

Есть сигнал, принимающий в качестве аргумента объект моего класса. Класс унаследован от QObject. При вызове

emit mySignal( myObject );
в консоль сыпится
QObject::connect: Cannot queue arguments of type 'QVector<int>' 
Make sure 'QVector<int>' is registred using qRegisterMetaType(). 
Причем тут вектор интов, если в сигнале используется другой класс? В заголовочном файле класса, объект которого передаю в сигнале, написал
Q_DECLARE_METATYPE(MyClass)
, в main'e писал
qRegisterMetaType<MyClass>();
. Не помогает, в консоль продолжают сыпаться сообщения о векторе интов, при этом все работает. Компиляю Qt 5.9.2 и gcc 6.3.0. Если проект собирать под Qt 4.8.7,то все норм и ничего не ругается.


Пересобери проект. Удали все объектные файлы и собери заново. «Мистика» обычно лечится именно так :)

Deleted
()

Clean -> Run QMake -> Reuild Project.

anonymous
()
Ответ на: комментарий от Deleted

В общем сам дурак. Сигнал с моим классом эмитится из другого потока, при коннекте был указан DirectConnection, заменил на QueuedConnection и сообщения перестали сыпаться, но теперь интерфейс подвисает.

asaks
() автор топика

Интересно почему Qt4 молчал и не сыпал в консоль

asaks
() автор топика

Там всё надежно работает как часы, а раз у тебя так странно работает код на Qt с сигналами, значит ты делаешь дом на базе скотча и жевачки до первого ветра случайности.

I-Love-Microsoft ★★★★★
()

в main'e писал
qRegisterMetaType<MyClass>();

А доку слабо прочитать?

RazrFalcon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.