Название: Отправка через QueuedConnection вектора умных указателей Отправлено: Crazy Sage от Июнь 24, 2017, 13:31 Приветствую, столкнулся с такой задачей - надо между потоками сигнал-слотом прокинуть QVector<QSharedPointer<Tester> >
Tester - мой класс, унаследованный от QObject'а. При попытке сделать в лоб ругается, что надо регистрировать метатип. Если пытаюсь после объявления класса Tester добавить Код: typedef QVector<QSharedPointer<Tester> > TestPointerVector; А в main() сделать Код: qRegisterMetaType<TestPointerVector>(); Как вообще это сделать правильно? Тестовый main() выглядит следующим образом Код: int main(int argc, char *argv[]) Название: Re: Отправка через QueuedConnection вектора умных указателей Отправлено: sergek от Июнь 24, 2017, 16:52 Вроде, нужно так:
qRegisterMetaType<TestPointerVector>("TestPointerVector"); Название: Re: Отправка через QueuedConnection вектора умных указателей Отправлено: Crazy Sage от Июнь 24, 2017, 17:07 Вроде, нужно так: qRegisterMetaType<TestPointerVector>("TestPointerVector"); Так я тоже пробовал, разницы никакой, ошибки компиляции остаются те же. Название: Re: Отправка через QueuedConnection вектора умных указателей Отправлено: Kurles от Июнь 24, 2017, 21:32 То не собирается, выдаёт ошибки из qmetatype.h и qtypeinfo.h о том, что к этому франкенштейну и sizeof не применить, и тип его неполный. Такое может быть из-за того, что тайпдеф до объявления Tester делается.Название: Re: Отправка через QueuedConnection вектора умных указателей Отправлено: Crazy Sage от Июнь 24, 2017, 21:35 Разобрался, оказывается в такой ситуации нельзя отправлять в сигнале слоте QVector<>, надо const QVector<>&, тогда всё работает.
|