这里两个Integrate标题的界面是widgets界面,Hello World标题的界面是QML界面

程序运行截图如下:

点击获取QML中的值后:

点击设置QML中的值后

这里关闭窗口,整合的C++类也会自动析构(Qt真是强大)

目前官网给出的要整合C++的,需要Qt5.7以上的版本。

使用Q_PROPERTY宏可以被QML控件直接读取,访问

如下:

这个setUserName函数里面发出userNameChanged信号,这个型号被QML的onUsername
Changed

这里使用了ItemManager类管理qml界面的控件:

#ifndef ITEMMANAGER_H
#define ITEMMANAGER_H#include <QObject>
#include <QList>class ItemManager : public QObject
{Q_OBJECT
public:void addItem(QObject *item);QObject *getObject();void printTest();~ItemManager();static ItemManager *getInstance();protected:explicit ItemManager(QObject *parent = nullptr);ItemManager();ItemManager(ItemManager &item);private:QList<QObject*> m_item;static ItemManager *m_instance;};#endif // ITEMMANAGER_H

QML进行注册:

对应的C++类

#ifndef BACKEND_H
#define BACKEND_H#include <QObject>class BackEnd : public QObject
{Q_OBJECTQ_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)public:explicit BackEnd(QObject *parent = nullptr);~BackEnd();QString userName();void setUserName(const QString &userName);signals:void userNameChanged();private:QString m_userName;};#endif // BACKEND_H

Qml使用

import QtQuick 2.6
import QtQuick.Window 2.14
import QtQuick.Controls 2.2
import cn.it1995.bakend 1.0Window {visible: truewidth: 640height: 480title: qsTr("Hello World")BackEnd{id: backend}TextField{text: backend.userNameplaceholderText: "user name"anchors.centerIn: parentonTextChanged: backend.userName = text}}

源码下载地址如下:

https://github.com/fengfanchen/Qt/tree/master/IntegrateCPP%26QML

QML笔记-整合C++及单例模式管理QML中控件相关推荐

  1. WinCE5.0移动平台开发笔记(c#中使用多线程访问winform中控件的若干问题(zt))

    本文转载于:http://www.cnblogs.com/zhaotiantang/archive/2009/03/17/1414135.html 我们在做winform应用的时候,大部分情况下都会碰 ...

  2. QML笔记:QML基本概念及使用

    QML笔记:QML基本概念及使用 Qt5中的Qt Qml和Qt Quick架构 Qt Qml模块本身并没有涉及图形显示,所有的图形处理都由Qt Quick模块完成. Qt Quick 以QPA(Qt ...

  3. QML笔记-4中方式运行qml文件

    目录 使用QQmlApplicationEngine运行qml 使用qml工具运行 使用qmlScene工具运行qml文件 使用QtQuick Prototype运行qml文件 使用QQmlAppli ...

  4. QML基础——在C++程序中使用QML

    本文翻译自Using QML in C++ Applications.欢迎大家编辑.修改此文章. QML API有三个主要成员--QDeclarativeEngine,QDeclarativeComp ...

  5. Git笔记(13) 分支管理

    Git笔记(13) 分支管理 1. 分支管理工具 2. 查看分支列表 3. 查看分支最后一次提交 3. 查看已合并分支列表 4. 查看未合并分支列表 1. 分支管理工具 在 Git学习笔记(12) 分 ...

  6. Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程、翻译、QSetting )【建议收藏】

    文章目录 一.开门见山 二.最基本的框架(v0.1) 1. 后端数据处理 2. 导出 C++ 对象的 QML 的属性 3. 前台 UI 数据 三.完善执行逻辑(v0.2) 四.发布版本(v1.0) 1 ...

  7. 侯捷C++八部曲笔记(五、内存管理)

    侯捷C++八部曲笔记(五.内存管理) 表达式new.delete 基本用法 array new.array delete replacement new ----------------------- ...

  8. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  9. Windows进程与线程学习笔记(七)—— 时间片管理

    Windows进程与线程学习笔记(七)-- 时间片管理 要点回顾 基本概念 CPU时间片 分析 KeUpdateRunTime 分析 KiDispatchInterrupt 备用线程 总结 要点回顾 ...

最新文章

  1. ansys中的柱坐标与直角坐标关系
  2. 洛谷 P4245 【模板】任意模数NTT
  3. boost::mpl模块实现set_c相关的测试程序
  4. 这是一名既能打比赛,又会发论文JD AI实验室的算法工程师,CSDN博客专家
  5. C++ 常用算数生成算法
  6. 第八章 丹药吃坏人了
  7. (转)J2EE十三个技术规范
  8. js设置radio单选框值选中
  9. 局域网ftp工具,ftp上传下载工具使用指南,5款好用的局域网ftp工具推荐
  10. 苹果激活锁怎么解除?手把手教你关闭激活锁
  11. 监控系统整合告警平台实现邮件、短信、微信、电话语音和app等多方式报警
  12. Visual Studio Code的下载与安装
  13. python支持复数类型以下说法错误的是_关于Python的数字类型,以下选项中描述错误的是...
  14. ZigBee中协调器断电重连问题?
  15. 怎样查找MP3音乐链接地址 用于QQ空间背景
  16. 【DP1】钢条分割详解
  17. POI XWPFParagraph.getRuns分段混乱问题解决
  18. 也跟风玩一玩CH552
  19. LeetCode 904. 水果成篮
  20. App地推统计:最全面的业绩统计方案

热门文章

  1. MA5683T开局大致开局指导
  2. 第二章 XHTML简介
  3. 拯救IT人的报表神器来了,不用写代码,还免费
  4. 实际工作中,一个完整的可视化大屏项目有哪些步骤?
  5. 飞鸽传书2010绿色版
  6. 局域网聊天 一个十分热门的话题
  7. 我的第一句__asm 语句[很简单]
  8. 简析Visual C++中的活动数据对象
  9. 为什么我不看好PWA
  10. 为什么不给面试不过的人发通知,很难吗?