QML和C++混合编程--(三)
文章目录
- QML和C++混合编程--(三)之属性绑定
- 简介:
- 示例:
- 代码过程:
- 总结:
QML和C++混合编程–(三)之属性绑定
简介:
属性绑定是QML的一个强有力的特性,它使得各种类型的值被自动同步更新。它的更新机制是利用信号和槽。
示例:
让我们来绑定color属性。效果如下
单击后变为:
代码过程:
一、修改app.qml如下:
import Charts 1.0import QtQuick 2.0Item {width: 300; height: 200Row {anchors.centerIn: parentspacing: 20PieChart {id: chartAwidth: 100; height: 100color: "red"}PieChart {id: chartBwidth: 100; height: 100color: chartA.color}}MouseArea {anchors.fill: parentonClicked: { chartA.color = "blue" }}Text {anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }text: "Click anywhere to change the chart color"}}
“color: chartA.color” 绑定了chartB和chartA的color 值。 当chartA的color值改变时,chartB的color值会自动与chartA保持一致。
这里当我们单击窗体时,onClicked handler in the MouseArea 会触发改变chartA 的color,此时chartB 的颜色也会随之改变。
这里颜色属性的绑定非常简单。我们只需要在该Q_PROPERTY() 的声明中注明一个NOTIFY特性的信号"colorChanged"就可以了,那么已出发该信号就可以改变颜色的属性了。
class PieChart : public QQuickPaintedItem{...Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)public:...signals:void colorChanged();...};
然后,我们写一个函数setPieSlice()来触发一个colorChanged()信号:
void PieChart::setColor(const QColor &color){if (color != m_color) {m_color = color;update(); // repaint with the new coloremit colorChanged();}}
这里我们在发送colorChanged()之前,先判断颜色是否变化。
总结:
QML的属性绑定是非常实用的。你只需要在信号前添加一个NOTIFY的声明就可以了。
QML和C++混合编程--(三)相关推荐
- Qt文档阅读笔记-QQmlApplicationEngine解析与实例(qml与C++混合编程及QQuick与widgets混合)
目录 官方解析 博主例子 官方解析 QQmlApplicationEngine提供了从一个QML文件里面加载应用程序的方式. 这类联合了QQmlEngine和QmlComponent去加载单独的QML ...
- QML与C++混合编程详解
转载地址:https://www.cnblogs.com/findumars/p/6090850.html 1.QML与C++为什么要混合编程 QML与C++为什么要混合编程,简单来说,就是使用QML ...
- Qt Quick Qml 之QML与C++ 混合编程学习
<QML与C++ 混合编程学习> 1. 在 QML 中使用 C++ 类和对象 1) C++ 类的修改 2) 注册 QML 类型 3) 在 QML 中导入类型 4) 在 QML 创建由 C+ ...
- QML和C++混合编程--(二)
文章目录 QML和C++混合编程--(二)之QML连接C++方法和信号 简介: 一.修改app.qml 文件 二.修改c++中的类 QML和C++混合编程–(二)之QML连接C++方法和信号 简介: ...
- QML和C++混合编程--(一)
文章目录 QML和C++混合编程 (一) 简介 : Chapter 1: Creating a New Type QML和C++混合编程 (一) 简介 : 本教程介绍在C++应用程序中扩展使用QML. ...
- Qt Quick 中 QML 与 C++ 混合编程详解
Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...
- Qt Quick 之 QML 与 C++ 混合编程详解
Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...
- c++ qml 数组_【QML与C++混合编程】用QVariantList传递数组类型成员
2017.5.8 更新:Record类要用指针,QObject 不能有拷贝函数. 我有一个C++中自定义的ReaderModel,继承自QAbstractListModel类,传递给了QML. 它的m ...
- QT QML 与C++ 混合编程
一.QML简介 从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt Meta Language 或者 Qt Modeling Language),作为 C++ 语 ...
最新文章
- Hadoop pipes设计原理
- Wpf TextChanged事件导致死循环,事件触发循环问题
- QT的QDtls类的使用
- mysql数据库的行级锁有几种_mysql锁之三种行级锁介绍
- [转载] Python简介、linux上Python及其IDE的安装和详细配置
- my97Date如何多选日期且无重复日期
- Microsoft Caffe(msCaffe)无GPU快速配置
- VmPlayer上设置主机和windows虚拟机文件夹共享
- 三相滤波器怎么接线_三相电源滤波器作用 详解三相电源滤波器
- Reed-Solomon Codes——RS纠错码
- 迅捷pdf编辑器是如何编辑pdf文件的
- 美国迈阿密二手房房价预测
- 做个grub的U盘启动盘,即将grub安装到U盘上面。
- 是谁扼杀了你的梦想?
- paddlepaddle、paddlehub依赖包下载并离线安装
- 探索者系列_百度百科
- Appcelerator首席运营官Sandeep Johri:新一代企业移动互联网平台开发技术
- 什么是编程?大道之行也,“编程”为公
- ECCV 2022 | RFLA:基于高斯感受野的微小目标检测标签分配
- 为什么要出具软件测试报告及测试场景