作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图将 QWebSocket
连接放入 QThread
QThread *thread = new QThread;
connect(&websocket,&QWebSocket::connected,this,&Widget::onWsConnect);
websocket.moveToThread(thread);
connect(thread, &QThread::finished, &websocket, &QObject::deleteLater);
websocket.open(wsUrl);
thread->start();
程序编译没有错误,运行正常,但是当它试图连接到websocket服务器时抛出这个错误:
QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketState' (Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().)
当我做的时候
websocket.open(wsUrl);
没有线程连接工作正常。
有什么想法吗?
最佳答案
如果你想通过排队的信号/槽连接发送你的对象,你应该使用qRegisterMetaType<T>()
.只需在构造函数中某处打开套接字之前调用它即可:
qRegisterMetaType<QAbstractSocket::SocketState>();
关于c++ - 确保使用 qRegisterMetaType() 注册了 'QAbstractSocket::SocketState',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856216/
我试图将 QWebSocket 连接放入 QThread QThread *thread = new QThread; connect(&websocket,&QWebSocket::connecte
我是一名优秀的程序员,十分优秀!