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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章