一、C++的信号和QML的槽

前言:

Qt中的信号与槽,通常是一个信号SIGNAL和一个槽SLOT,通过connet连接,而QML中不需要再写槽函数,只需要在合适的地方告诉QML:如果x信号产生则执行x

如有信号:

Class A{
  signals:
void rcvData(QString str);
};

则在QML里:onRcvData:{

  //执行x如console.log(str);

}

格式:在信号前面加on,然后信号首字母大写,注意参数可执行使用

1、如果注册的是C++类,那么可以在QML中实例化对象的时候直接捕获

A{
id:a
onRcvData:{
console.log(str)
}
}

2、如果注册的是C++对象,则需要Connections连接

Connections {
target: a
onRcvData: {
console.log(str)
}
}

二、QML的信号和QML的槽

sendSignal.connect(target.recvSlot)

直接使用connect连接,在合适的地方如Component.onCompleted里连接信号与槽,sendSignal当前对象是定义的信号,recvSlot实际上是一个function

ps

网友总结,转:http://blog.csdn.net/x356982611/article/details/53871748

简介

QML 与 C++ 混合编程时,总结了一下qml和c++互相直接调用、及信号与槽连接 的几种情况,详细使用情况看示例代码 
所有的QML对象都派生自QObject,不管是可视对象还是集成在c++程序中的对象。一旦QML对象被创建,就可以集成到c++中,读写属性,调用其方法和接收其信号

连接qml中信号与函数

Component.onCompleted:
{
sendMessageSigal.connect(getMessage);
}

连接 qml中函数与c++中信号

Connections
{
//qml 连接 c++ 信号
target:interaction
onConnectcppsignal:
{
label2.text=strMsg;
}
}

qml中直接调用c++函数

onClicked:
{
//qml 调用 c++函数
interaction.test();
}

连接c++中函数与qml中信号

QObject* quitButton = root->findChild<QObject*>("quitButton");
if (quitButton)
{
QObject::connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));
}

c++中直接调用qml中函数

QObject* textLabel = root->findChild<QObject*>("objNameL4");
if (textLabel)
{
QMetaObject::invokeMethod(textLabel, "setL4text");
}

c++连接信号与槽函数

QObject::connect(this,&CInteraction::valueChanged,this,&CInteraction::setValue); //qt5 新语法

c++ 连接信号与普通函数

QObject::connect(this,&CInteraction::valueChanged,outPutInfo);

c++ 连接信号与lambda函数

QObject::connect(this,&CInteraction::valueChanged,[=,this](){  qDebug()<<"lambda called, value:"<<this->value_<<"\n"; });

QML之信号与槽的更多相关文章

  1. QML于C++交互之信号与槽(signal&slot )

    connect c++ SIGNAL with QML SLOT 简介 QML 与 C++ 混合编程时,总结了一下qml和c++互相直接调用.及信号与槽连接 的几种情况,详细使用情况看示例代码 所有的 ...

  2. QML小例子【QML工程里信号与槽】

    1.效果 代码参考B站视频:https://www.bilibili.com/video/av36584062 功能:点击左边,会发出信号,右边会有个颜色动画,然后计数+1 2.分析: 一共有两个对象 ...

  3. Qt Quick 事件处理之信号与槽

    前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本的语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经能够完毕 ...

  4. Qt的信号和槽是如何工作的

    用Qt做过开发的朋友,不知道是否曾为下面这些问题疑惑过:我们知道Qt是基于C++的,Qt写的代码最终还是要由C++编译器来编译,但是我们的Qt代码中有很多C++里没有的关键字,比如slots\sign ...

  5. Qt Quick中的信号与槽

    在QML中,在Qt Quick中,要想妥善地处理各种事件,肯定离不开信号与槽,本博的主要内容就是整理Qt 中的信号与槽的内容. 1. 链接QML类型的已知信号 QML中已有类型定义的信号分为两类:一类 ...

  6. Qt Quick 事件处理之信号与槽(foruok的博客)

    前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经可以完成简 ...

  7. 第15.19节 PyQt(Python+Qt)入门学习:自定义信号与槽连接

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 本文利用中介绍了PyQt中的信号和槽机制,除了使用PyQt组件的已有信号外,PyQt和Qt ...

  8. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

  9. Qt信号与槽自动关联机制

    参考链接1:http://blog.csdn.net/skyhawk452/article/details/6121407 参考链接2:http://blog.csdn.net/memory_exce ...

随机推荐

  1. httpd基于域名不同的虚拟主机配置

    apache2.2.x版本 1. 注释主配置文件/etc/httpd/conf/httpd.conf中的 DoucumentRoot #DocumentRoot "/var/www/html ...

  2. jFinal手册

    JFinal官方文档 https://www.jfinal.com/ w3cschool之JFinal手册 https://www.w3cschool.cn/jfinal/

  3. mac上安装Nginx详细教程

    1. 安装(可以用 brew 安装) sudo brew install nginx 2. 查看 nginx 版本 nginx -v 3. 启动 nginx sudo nginx 1也可以使用下面的命 ...

  4. 洛谷P1346 电车【最短路】

    题目:https://www.luogu.org/problemnew/show/P1346 题意:n个路口,每个路口有好几条轨道,默认指向给出的第一个路口. 如果要换到另外的轨道去需要按一次开关.问 ...

  5. MAC OS系统替换homebrew使用阿里云的镜像源

    MAC OS系统替换homebrew使用阿里云的镜像源 2019-03-03 15:13:42 南通SEO 阅读数 2024更多 分类专栏: 解决方案   MAC OS系统替换homebrew使用阿里 ...

  6. 【优化算法】变邻域搜索算法解决0-1背包问题(Knapsack Problem)代码实例 已

    01 前言 经过小编这几天冒着挂科的风险,日日修炼,终于赶在考试周中又给大家更新了一篇干货文章.关于用变邻域搜索解决0-1背包问题的代码.怎样,大家有没有很感动? 02 什么是0-1背包问题? 0-1 ...

  7. Effective Java 3

    <Effective Java>作者是美国的Joshua Bloch,连Gosling都说需要看的书,讨论的是更深层次的Java开发技术,适合于有一定Java基础的人看. 这是一本分享经验 ...

  8. Tkinter 之ListBox列表标签

    一.参数说明 参数 作用 background (bg) 设置背景颜色 borderwidth (bd) 指定 Listbox 的边框宽度,通常是 2 像素 cursor  指定当鼠标在 Listbo ...

  9. GO make&new区别

    自:http://www.cnblogs.com/ghj1976/archive/2013/02/12/2910384.html 1.make用于内建类型(map.slice 和channel)的内存 ...

  10. 学号 20175313 《Android程序设计》实验报告

    目录 一.实验内容 (1)Android Stuidio的安装测试 (2)Activity测试 (3)UI测试 (4)布局测试 (5)事件处理测试 二.实验步骤 (1)Android Stuidio的 ...