当前位置: 首页 > article >正文

跨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函数来注册它们。 


http://www.kler.cn/a/421337.html

相关文章:

  • AIGC 时代的文学:变革与坚守
  • 汽车网络安全 -- IDPS如何帮助OEM保证车辆全生命周期的信息安全
  • 【从零开始的LeetCode-算法】3274. 检查棋盘方格颜色是否相同
  • 单机环境下Caffeine和Redis两级缓存的实现与问题解决
  • OpenCV圆形标定板检测算法findCirclesGrid原理详解
  • C 语言中的外部变量
  • 基于Matlab卡尔曼滤波的GPS/INS集成导航系统研究与实现
  • Kafka如何保证消息可靠?
  • 【Golang】WaitGroup 实现原理
  • 解决el-select数据量过大的3种方法
  • nerdctl:与 Docker 兼容的 containerd CLI
  • ArcMap 多图层叠加表达变化等功能操作
  • 21天掌握javaweb--->第3天:MyBatis基础与Spring Boot集成
  • MATLAB基础应用精讲-【人工智能】数据生命周期‌(概念篇)
  • 【jvm】C1编译器
  • NLP-语料库的相关知识整理
  • vue 项目准备
  • Figma入门-组件变体复习
  • Kafka 数据写入问题
  • linux安全-firewalld防火墙-基础讲解
  • Linux Find 命令详情解释
  • cf EC 172 C(0->-1 的转化+区间和使用前缀和表示,化简式子)+ D(二维的信息,先对一维排序,另一维看情况分析)
  • 时间同步服务器--Linux中
  • leetcode--螺旋矩阵
  • 《利用 Python 和 Pyecharts 对豆瓣电影数据可视化分析》
  • 「Java EE开发指南」如何在Java EE网站中使用CodeLive?