我在Qt中遇到了一些问题。我有一个带有字符串参数的信号和一个槽函数的类。我在类的构造函数中将信号连接到槽函数。此外,我还在类的构造函数中创建了一个线程。该线程从服务器读取数据并更新UI(发出UpdateMe信号)。以下是我如何将信号连接到槽函数的方式:
我有一个带有一些文件名的QTreeWidget。当我重命名一个文件时,我会通知服务器,然后服务器会通知其他客户端。当我连接一个客户端时没有问题,但是当我连接多个客户端时出现问题:当我从第二个客户端通知服务器(当我写入套接字)时,会出现以下错误:
我尝试使用
QObject::connect(this, SIGNAL(UpdateMe(string, string)), this, SLOT(ModifyUI(string, string)));
我有一个带有一些文件名的QTreeWidget。当我重命名一个文件时,我会通知服务器,然后服务器会通知其他客户端。当我连接一个客户端时没有问题,但是当我连接多个客户端时出现问题:当我从第二个客户端通知服务器(当我写入套接字)时,会出现以下错误:
QObject::connect: Cannot queue arguments of type 'QVector<int>'
我尝试使用
qRegisterMetaType
注册QVector<int>
,但我还有一个信号,在修改QTreeWidgetItem
时发出(例如重命名项目),当我想要更改项目的文本时,我需要断开这个信号的连接。如果我注册QVector<int>
,我就无法断开这个信号,而且信号会被触发。
QObject::disconnect(this->filesTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(OnItemChanged_filesTreeWidget(QTreeWidgetItem*,int))); item->setText(0, QString::fromStdString(newFilename)); QObject::connect(this->filesTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(OnItemChanged_filesTreeWidget(QTreeWidgetItem*,int)), Qt::QueuedConnection);
- John SmithQAbstractItemModel::dataChanged
,却收到了这个错误。不知道为什么如果Qt(5.15.2)在内部使用QVector<int>
,为什么没有调用qRegisterMetaType
? - ulatekh