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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT4:: Cannot queue arguments of type 'QAbstractSocket::SocketState'  (Прочитано 8873 раз)
voral
Гость
« : Октябрь 30, 2009, 21:19 »

Делаю клиент-сервер. Изучаю работу Qthread и QTcp... .

В QT Асистенте нашел что QTcpSocket имеет сигнал stateChanged ( QAbstractSocket::SocketState ) унаследованный от QAbstractSocket. В соответствии с этим пишу:
Код
C++ (Qt)
void FortuneThread::run()
{
   QTcpSocket tcpSocket;
   if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
           emit error(tcpSocket.error());
       return;
   }
   connect(&tcpSocket,SIGNAL(stateChanged(QAbstractSocket::SocketState)),this,SLOT(stateChanged(QAbstractSocket::SocketState)));
   qDebug() << "Server thread: starting";
   this->exec();
}
void FortuneThread::stateChanged (QAbstractSocket::SocketState socketState) {
    qDebug() << "Server thread: state changed";
}
 
 
При коннекте клиента в консоли появляется:

QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketState'
(Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().)

Из описания я понял, что нужно использовать qRegisterMetaType для своих классов. И вызывать там где создаются экземпляры этого самого объекта.
Но ведь QAbstractSocket::SocketState QT-шная штука.....

Подозреваю, что я сделал что то не так. Поправьте.
Или где вставить qRegisterMetaType?

#include <QAbstractSocket> - имеется
Записан
andrew.k
Гость
« Ответ #1 : Ноябрь 02, 2010, 21:20 »

Q_DECLARE_METATYPE( QAbstractSocket::SocketError); // в .h
qRegisterMetaType<QAbstractSocket::SocketError>(); // в конструкторе или где угодно, но до QObject::connect(...)
Записан
andrew.k
Гость
« Ответ #2 : Ноябрь 02, 2010, 21:27 »

Вот чего мне не удалось добиться так это использовать в сигналах и слотах свой класс и чтобы передача параметра была по ссылке.
Кто умеет?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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