Название: передача QList чрез сигнал/слот Отправлено: Dorian от Декабрь 01, 2014, 15:29 Добрый вечер, изучаю qt застрял на проблеме:
У меня есть сервер(QTcperver) В нем создается отдельный поток в потоке объявлен: private: QList<quint16*> list; signals: void exem_signal(QList<quint16*> list); Выполняется поток и данные в формате quint16 записываю в list затем вызываю сигнал emit exem_signal(list); у Сервера есть слот для обработки сигнала public slost: void exemp_slot(QList<quint16*> list) Реализаця слота: void Server::exem_slot(QList<quint16*> list) { } так вызываю конект на сервере: connect(search_thread, SIGNAL(exem_signalexem_signal(QList<quint16*>), this, SLOTexem_slot(exemp_slot(QList<quint16*> ))) Собственно понмаю что скорее всего намудрил с указателями чтото так как еще и параллельно с++ зучаю, просьба подсказать с чем намудрил. Название: Re: передача QList чрез сигнал/слот Отправлено: gil9red от Декабрь 01, 2014, 15:32 А для чего указатели использовать? У все же простой тип int, можно передавать по значению...
Название: Re: передача QList чрез сигнал/слот Отправлено: Dorian от Декабрь 01, 2014, 15:44 я сначала делал без указателей, но во время выполнения программы выкидывало ошибку:
QObject::connect: Cannot queue arguments of type 'QList<quint16>' (Make sure '<quint16>' is registered using qRegisterMetaType().) я гуглил и наткнулся на форумах на решение проблемы если через указатели делать Название: Re: передача QList чрез сигнал/слот Отправлено: Fregloin от Декабрь 02, 2014, 15:06 почитайте про Q_DECLARE_METATYPE, а еще можно было указать так QList<unsigned short> или QList<uint16_t> (#include <types.h>)
Название: Re: передача QList чрез сигнал/слот Отправлено: Fregloin от Декабрь 02, 2014, 15:08 и лучше передавать в сигнале и принимать в слоте по ссылке а не по значению, избежите ненужные копирования
Название: Re: передача QList чрез сигнал/слот Отправлено: Dorian от Декабрь 03, 2014, 16:43 спасибо за советы, оба учел, проблема решена
|