Задача состоит в том, что есть два класса. В экземпляре одного из принимаются на вход данные (например чтение из файла) и после обработки передается в экземпляр другого класса. Первый класс, который формирует и передает данные наследуется от QThread. Второй является наследником QWidget. В итоге при использовании сигнально-слотового соединения в консоль выдается следующее сообщение.
QObject::connect: Cannot queue arguments of type 'QByteArray&' (Make sure 'QByteArray&' is registered using qRegisterMetaType().)
Сигнал первого класса:
void sendBytes(QByteArray& arr);
Слот второго класса:
void receiveBytes(QByteArray&);
Соединение:
connect(ctch, SIGNAL(sendBytes(QByteArray&)), this, SLOT(receiveBytes(QByteArray&)));
Наследоваться от QThread
плохо, читайте как правильно делать в Threads Events QObjects. Конкретно по Вашей ошибке: Вы передаёте lvalue-ссылку сквозь потоки, что крайне небезопасно. Qt не может упаковать такую ссылку и передать в другой поток, отсюда и ошибка. Используйте ссылку на константу или передачу по значению.
QByteArray является implicit sharing классом. Это означает что данный класс является оберткой вокруг указателя с подсчетом ссылок, реализующий поведение copy-on-write. При создании экземпляра-копии увеличивается счетчик ссылок. При изменении содержимого создается новая полная копия объекта с вносимыми изменениями для экземпляра где вносятся изменения, все остальные экземпляры не изменяются. Экземпляры классов с подсчетом ссылок бессмысленно передавать по ссылке, т.к. экономии при этом не достигается.
Передавайте QByteArray по значению
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Могут ли существовать две строки std::string a и std::string b, для которых a == b возвращает true, но они имеют разный вид при std::cout << a << b?
Ильнар в одной из комнат увидел странного роботаВо время выполнения алгоритма, он доставал из мешка разные камушки