原文請參考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
}