原文请参考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 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
}