QML和C++混合编程--(三)
生活随笔
收集整理的這篇文章主要介紹了
QML和C++混合编程--(三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- QML和C++混合編程--(三)之屬性綁定
- 簡介:
- 示例:
- 代碼過程:
- 總結:
QML和C++混合編程–(三)之屬性綁定
簡介:
屬性綁定是QML的一個強有力的特性,它使得各種類型的值被自動同步更新。它的更新機制是利用信號和槽。
示例:
讓我們來綁定color屬性。效果如下
單擊后變為:
代碼過程:
一、修改app.qml如下:
import Charts 1.0import QtQuick 2.0Item {width: 300; height: 200Row {anchors.centerIn: parentspacing: 20PieChart {id: chartAwidth: 100; height: 100color: "red"}PieChart {id: chartBwidth: 100; height: 100color: chartA.color}}MouseArea {anchors.fill: parentonClicked: { chartA.color = "blue" }}Text {anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }text: "Click anywhere to change the chart color"}}“color: chartA.color” 綁定了chartB和chartA的color 值。 當chartA的color值改變時,chartB的color值會自動與chartA保持一致。
這里當我們單擊窗體時,onClicked handler in the MouseArea 會觸發改變chartA 的color,此時chartB 的顏色也會隨之改變。
這里顏色屬性的綁定非常簡單。我們只需要在該Q_PROPERTY() 的聲明中注明一個NOTIFY特性的信號"colorChanged"就可以了,那么已出發該信號就可以改變顏色的屬性了。
class PieChart : public QQuickPaintedItem{...Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)public:...signals:void colorChanged();...};然后,我們寫一個函數setPieSlice()來觸發一個colorChanged()信號:
void PieChart::setColor(const QColor &color){if (color != m_color) {m_color = color;update(); // repaint with the new coloremit colorChanged();}}這里我們在發送colorChanged()之前,先判斷顏色是否變化。
總結:
QML的屬性綁定是非常實用的。你只需要在信號前添加一個NOTIFY的聲明就可以了。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的QML和C++混合编程--(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QML和C++混合编程--(二)
- 下一篇: 关于c++静态类的说法