Russian Qt Forum
Май 02, 2024, 04:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: передача QList чрез сигнал/слот  (Прочитано 4336 раз)
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*> )))

Собственно понмаю что скорее всего намудрил с указателями чтото так как еще и параллельно с++ зучаю, просьба подсказать с чем намудрил.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 01, 2014, 15:32 »

А для чего указатели использовать? У все же простой тип int, можно передавать по значению...
Записан

Dorian
Гость
« Ответ #2 : Декабрь 01, 2014, 15:44 »

я сначала делал без указателей, но во время выполнения программы выкидывало ошибку:
QObject::connect: Cannot queue arguments of type 'QList<quint16>'
(Make sure '<quint16>' is registered using qRegisterMetaType().)

я гуглил и наткнулся на форумах на решение проблемы если через указатели делать
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Декабрь 02, 2014, 15:06 »

почитайте про Q_DECLARE_METATYPE, а еще можно было указать так QList<unsigned short> или QList<uint16_t> (#include <types.h>)
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #4 : Декабрь 02, 2014, 15:08 »

и лучше передавать в сигнале и принимать в слоте по ссылке а не по значению, избежите ненужные копирования
Записан
Dorian
Гость
« Ответ #5 : Декабрь 03, 2014, 16:43 »

спасибо за советы, оба учел, проблема решена
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.