QML 与 C++ 交互之工厂方法
来源:互联网 发布:js object 增加属性 编辑:程序博客网 时间:2024/05/01 15:58
QML 与 C++ 交互之工厂方法
先看如下的类声明,声明了一个产品类和工厂类。
#include <QObject>class Productor : public QObject{ Q_OBJECT Q_PROPERTY(int age READ age WRITE setAge NOTIFY ageChanged)public: explicit Productor(QObject *parent = 0); int age() const; void setAge(int age);signals: void ageChanged();private: int m_age;};class QQmlEngine;class QJSEngine;class Factory : public QObject{ Q_OBJECTpublic: Factory(QObject* parent); Q_INVOKABLE Productor* create(); static QObject *singleton(QQmlEngine *engine, QJSEngine *scriptEngine);};
c++ main 函数中注册方式如下:
qmlRegisterType<Productor>("FactoryDemo", 1, 0, "Productor"); qmlRegisterSingletonType<Factory>("FactoryDemo", 1, 0, "Factory", &Factory::singleton);
Productor
注册为类型,Factory
注册为单例。在 QML 中使用如下:
import QtQuick.Controls 1.2import FactoryDemo 1.0Button { text: qsTr("user create function") onClicked: { var p = Factory.create(); console.log(p.age); }}
语法补全和智能提示
由于 QtCreator 对 QML 函数的返回值类型支持不佳,所以无法对 p
进行代码的智能提示。
这个时候就可以使用属性与 QOjbect*
来 hack 一下了。
只需修改一行代码,且看如下:
class Factory : public QObject{ Q_OBJECT Q_PROPERTY(Productor* newCreate READ create ) ...};
只需添加一行属性声明的代码即可。
qml 使用如下,可以进行代码补全。
var p2 = Factory.newCreate; console.log(p2.age);
1 0
- QML 与 C++ 交互之工厂方法
- QML与c++交互方法
- qml之与C++交互
- QML与C++交互
- QML与c++交互
- QML与C++交互
- QML与C++交互
- QML与c++交互
- QML与C++交互
- QML与C++交互
- qml 与 c++交互
- C++与QML交互的 三种方法对比
- Qt:QML:QML于C++交互之信号与槽(signal&slot )
- QML与c++交互学习
- C++与QML交互基础
- QML与C++的交互
- qml与C++的交互
- 工厂设计模式之工厂方法与抽象工厂
- 自动启动支付宝支付宝小插件
- 自己学习JavaBean与理解
- FZU 1894 志愿者选拔【单调队列】【monotone decreasing queue】
- 直接插入排序
- 二值化算法之(一) --- OTSU二值化
- QML 与 C++ 交互之工厂方法
- maven 仓库网站地址
- makefile文件测试
- poj 2389 Bull Math
- 冒泡排序
- 安卓开发GitHub的入门使用流程---》适合小学生
- opencv 画直线,椭圆,多边形操作
- SGU 176 有源汇上下界的最小流
- 数据上传