Есть сигнал, принимающий в качестве аргумента объект моего класса. Класс унаследован от 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,то все норм и ничего не ругается.
В общем сам дурак.
Сигнал с моим классом эмитится из другого потока, при коннекте был указан DirectConnection, заменил на QueuedConnection и сообщения перестали сыпаться, но теперь интерфейс подвисает.
Там всё надежно работает как часы, а раз у тебя так странно работает код на Qt с сигналами, значит ты делаешь дом на базе скотча и жевачки до первого ветра случайности.