Joh*_*ith 7 c++ user-interface qt multithreading connect
我在Qt遇到了一些问题.我有一个带有信号的类,其参数是字符串,还有一个插槽.我正在将信号连接到类构造函数中的插槽.另外,我在类构造函数中创建一个线程.线程从服务器读取数据并更新UI(发出UpdateMe信号).这是我将信号连接到插槽的方式:
QObject::connect(this, SIGNAL(UpdateMe(string, string)), this, SLOT(ModifyUI(string, string)));
Run Code Online (Sandbox Code Playgroud)
我有一个带有一些文件名的QTreeWidget.当我重命名文件时,我通知服务器,服务器通知其他客户端.当我连接单个客户端时没有问题,但是当我连接多个客户端时出现问题:当我从第二个客户端通知服务器时(当我写入套接字时)出现以下错误:
QObject::connect: Cannot queue arguments of type 'QVector<int>'
Run Code Online (Sandbox Code Playgroud)
我尝试用qRegisterMetaType注册QVector,但是当我修改QTreeWidgetItem时(例如当我重命名项目时)我也有一个信号,当我想要更改项目的文本时我需要断开此信号.如果我注册QVector,我就无法断开此信号并且信号会被激活.
Jac*_*ins 11
当您注册QVector时,您的通话是否如此?
qRegisterMetaType<QVector<int> >("QVector<int>");
Run Code Online (Sandbox Code Playgroud)
进行此调用后,您应该能够通过排队连接发出QVector类型.
如果我注册QVector,我就无法断开此信号并且信号会被激活.
注册元类型不应该阻止您断开信号.它只允许您排队尚未在元系统中注册的类型.