QML与C++混合编程

       原文请参考http://blog.csdn.net/foruok/article/details/32698603

       用Qml写界面,复杂一点的功能交给C++代码来写.

       最简单的应用就是通过QML中控件的处理程序,比如Button的onClicked:{调用C++代码中的槽函数,形式为   类型名.槽函数名();},

注册属性用Q_PROPERTY,

一般形式为:Q_PROPERTY(type name READ name WRITE setname NOTIFY nameChanged);

如:Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged);

  • READ 标记,如果你没有为属性指定 MEMBER 标记,则 READ 标记必不可少;声明一个读取属性的函数,该函数一般没有参数,返回定义的属性。
  • WRITE 标记,可选配置。声明一个设定属性的函数。它指定的函数,只能有一个与属性类型匹配的参数,必须返回 void 。
  • NOTIFY 标记,可选配置。给属性关联一个信号(该信号必须是已经在类中声明过的),当属性的值发生变化时就会触发该信号。信号的参数,一般就是你定义的属性。
注册成员函数用Q_INVOKABLE

一般形式为:Q_INVOKABLE returnType functionName(pragma);

如:Q_INVOKABLE void setAlgorithm(GenerateAlgorithm algorithm);


注册枚举类型用Q_ENUMS

一般形式为:Q_ENUMS(EnumName);

例:Q_ENUMS(GenerateAlgorithm);


注册QML类型

在main.cpp中头部加

#include <QtQml>

在创建Engine之前加

qmlRegisterType<类名>("包名", 1, 0, "类名");

如:qmlRegisterType<ColorMaker>("an.qt.ColorMaker", 1, 0, "ColorMaker");

使用注册的QML类型

在要用到此类型的qml文件头部加

#include 包名 1.0

如: #include an.qt.ColorMaker 1.0

就可以像用一般Qml类型一样使用了

如:

ColorMaker{

       id:colorMaker

}

发布了41 篇原创文章 · 获赞 14 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章