Qml和C++混合编程
程序员文章站
2022-03-16 20:05:23
Qml和C++运行环境不同,是两个平行的世界,但Qml和C++支持混合编程。Qml使用C++类和对象C++中的类,注册为Qml环境中的一个类型,在Qml中使用该类型创建对象,使用方法:qmlRegisterType()。C++构造一个对象,将这个对象设置为Qml上下文,在Qml中直接使用该属性,使用方法:view.rootContext()->setContextProperty("classOb", new ClassName())定义C++类继承QObject类或者其派生类。...
Qml和C++运行环境不同,是两个平行的世界,但Qml和C++支持混合编程。
Qml使用C++类和对象
- C++中的类,注册为Qml环境中的一个类型,在Qml中使用该类型创建对象,使用方法:qmlRegisterType()。
- C++构造一个对象,将这个对象设置为Qml上下文,在Qml中直接使用该属性,使用方法:view.rootContext()->setContextProperty("classOb", new ClassName())
定义C++类
- 继承QObject类或者其派生类。
- 使用Q_OBJECT宏。
- 信号和槽可以直接在Qml中使用。
- Q_INVOKABLE宏,定义Qml可以访问的方法。
- Q_ENUMS宏定义Qml可访问的枚举类。
- Q_PROPERTY宏定义Qml可访问的属性。同时可以定义READ,WRITE,NOTIFY的属性对应的方法。
- 使用C++类:实现C++类->注册类(qmlRegisterType)->在Qml中导入类型(import)->Qml使用类型实例
C++使用Qml对象
C++通过Qml控件的objectName进行选择。代码如下:
QList<QObject*> rootObjects=engine.rootObjects();
QObject* root=NULL;
for(int i=0; i<rootObjects.size(); i++){
// 通过objectName属性来获取root对象
// root对象等同于C++中使用的控件,如QPushButton等,用法相同
if(rootObjects[i]->objectName()=="root"){
root=rootObjects.at(i);
}
}
本文地址:https://blog.csdn.net/quietbxj/article/details/107908616
上一篇: FreeBSD中启用3D加速功能的方法
下一篇: MySQL基础复习
推荐阅读
-
C++高级编程之对象模型、const、new和delete及其重载讲解
-
QML如何通过WebSocket和C++交互?
-
C++网络编程 卷1 运用ACE和模式消除复杂性——笔记1
-
C++编程笔记丨C++11(及现代C++风格)和快速迭代式开发
-
c++用结构和类编程分别实现复数加法和乘法
-
《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射
-
c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息
-
C++ & Python 混合编程之Python 调用 C++(SWIG)实例讲解
-
C++编程使用findfirst和findnext查找及遍历文件实现示例
-
python基础编程和c++的对比语法