文章目录

  • 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++混合编程--(三)相关推荐

  1. Qt文档阅读笔记-QQmlApplicationEngine解析与实例(qml与C++混合编程及QQuick与widgets混合)

    目录 官方解析 博主例子 官方解析 QQmlApplicationEngine提供了从一个QML文件里面加载应用程序的方式. 这类联合了QQmlEngine和QmlComponent去加载单独的QML ...

  2. QML与C++混合编程详解

    转载地址:https://www.cnblogs.com/findumars/p/6090850.html 1.QML与C++为什么要混合编程 QML与C++为什么要混合编程,简单来说,就是使用QML ...

  3. Qt Quick Qml 之QML与C++ 混合编程学习

    <QML与C++ 混合编程学习> 1. 在 QML 中使用 C++ 类和对象 1) C++ 类的修改 2) 注册 QML 类型 3) 在 QML 中导入类型 4) 在 QML 创建由 C+ ...

  4. QML和C++混合编程--(二)

    文章目录 QML和C++混合编程--(二)之QML连接C++方法和信号 简介: 一.修改app.qml 文件 二.修改c++中的类 QML和C++混合编程–(二)之QML连接C++方法和信号 简介: ...

  5. QML和C++混合编程--(一)

    文章目录 QML和C++混合编程 (一) 简介 : Chapter 1: Creating a New Type QML和C++混合编程 (一) 简介 : 本教程介绍在C++应用程序中扩展使用QML. ...

  6. Qt Quick 中 QML 与 C++ 混合编程详解

    Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...

  7. Qt Quick 之 QML 与 C++ 混合编程详解

    Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...

  8. c++ qml 数组_【QML与C++混合编程】用QVariantList传递数组类型成员

    2017.5.8 更新:Record类要用指针,QObject 不能有拷贝函数. 我有一个C++中自定义的ReaderModel,继承自QAbstractListModel类,传递给了QML. 它的m ...

  9. QT QML 与C++ 混合编程

    一.QML简介        从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt Meta Language 或者 Qt Modeling Language),作为 C++ 语 ...

最新文章

  1. Hadoop pipes设计原理
  2. Wpf TextChanged事件导致死循环,事件触发循环问题
  3. QT的QDtls类的使用
  4. mysql数据库的行级锁有几种_mysql锁之三种行级锁介绍
  5. [转载] Python简介、linux上Python及其IDE的安装和详细配置
  6. my97Date如何多选日期且无重复日期
  7. Microsoft Caffe(msCaffe)无GPU快速配置
  8. VmPlayer上设置主机和windows虚拟机文件夹共享
  9. 三相滤波器怎么接线_三相电源滤波器作用 详解三相电源滤波器
  10. Reed-Solomon Codes——RS纠错码
  11. 迅捷pdf编辑器是如何编辑pdf文件的
  12. 美国迈阿密二手房房价预测
  13. 做个grub的U盘启动盘,即将grub安装到U盘上面。
  14. 是谁扼杀了你的梦想?
  15. paddlepaddle、paddlehub依赖包下载并离线安装
  16. 探索者系列_百度百科
  17. Appcelerator首席运营官Sandeep Johri:新一代企业移动互联网平台开发技术
  18. 什么是编程?大道之行也,“编程”为公
  19. ECCV 2022 | RFLA:基于高斯感受野的微小目标检测标签分配
  20. 为什么要出具软件测试报告及测试场景

热门文章

  1. Sublime Text2使用ctex
  2. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170326
  3. OpenGL编程指南6:顶点数组
  4. 串口通信模块2:串口通信编程基础(打开、配置)
  5. Oracle安装笔记
  6. C实现的一个简单的学生成绩管理系统
  7. 利用ajax.dll进行Ajax的开发2007-07-15 15:38
  8. 故障解决:error while loading shared libraries: libncurses.so.5
  9. Java输出流需要注意的几点细节
  10. java反射的用途及实现