欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 跨UI发送信号

跨UI发送信号

2025/2/24 22:34:56 来源:https://blog.csdn.net/m0_62407354/article/details/144146173  浏览:    关键词:跨UI发送信号

如何自定义信号

1.使用signals声明
2.返回值是void
3.在需要发送的地方使用   emit 信号名字(参数);  进行发送
4.在需要链接的地方使用connect进行链4

signals:void sig_addOne(int value);
connect(&dlg,&SetDialog::sig_addOne,[=](int value){ui->lineEdit->setText(QString::number(value));});

如何跨线程发送信号

因为QT的子线程无法直接修改ui,所以需要发送信号到ui线程进行修改

非基础类型参数注册

报错:QObject::connect: Cannot queue arguments of type 'Score'

(Make sure 'Score' is registered using qRegisterMetaType().)

struct Score{string name;int id;int age;
};
ChildThread::ChildThread()
{qRegisterMetaType<Score>("Score");
}

qRegisterMetaType<Score>("Score");

  • <Score>:指定了要注册的类型。在这个例子中,Score是一个自定义的C++类。
  • "Score":这是一个字符串字面量,表示类型的名称。这个名称应该与你在代码中使用的类型名称相匹配,并且它用于Qt元对象系统的内部处理,比如类型检查和转换。

当使用Qt的信号和槽机制时,如果你尝试传递一个自定义类型(比如Score)作为参数,Qt需要知道如何正确地处理这个类型。默认情况下,Qt的信号和槽机制只支持基本的C++类型和Qt内置的一些类型(比如QStringQList<int>等)。对于自定义类型,你需要通过qRegisterMetaType函数来注册它们。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词