QML和C++混合编程--(三)
文章目錄
- QML和C++混合編程--(三)之屬性綁定
- 簡(jiǎn)介:
- 示例:
- 代碼過程:
- 總結(jié):
QML和C++混合編程–(三)之屬性綁定
簡(jiǎn)介:
屬性綁定是QML的一個(gè)強(qiáng)有力的特性,它使得各種類型的值被自動(dòng)同步更新。它的更新機(jī)制是利用信號(hào)和槽。
示例:
讓我們來綁定color屬性。效果如下
單擊后變?yōu)?#xff1a;
代碼過程:
一、修改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 值。 當(dāng)chartA的color值改變時(shí),chartB的color值會(huì)自動(dòng)與chartA保持一致。
這里當(dāng)我們單擊窗體時(shí),onClicked handler in the MouseArea 會(huì)觸發(fā)改變chartA 的color,此時(shí)chartB 的顏色也會(huì)隨之改變。
這里顏色屬性的綁定非常簡(jiǎn)單。我們只需要在該Q_PROPERTY() 的聲明中注明一個(gè)NOTIFY特性的信號(hào)"colorChanged"就可以了,那么已出發(fā)該信號(hào)就可以改變顏色的屬性了。
class PieChart : public QQuickPaintedItem{...Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)public:...signals:void colorChanged();...};然后,我們寫一個(gè)函數(shù)setPieSlice()來觸發(fā)一個(gè)colorChanged()信號(hào):
void PieChart::setColor(const QColor &color){if (color != m_color) {m_color = color;update(); // repaint with the new coloremit colorChanged();}}這里我們?cè)诎l(fā)送colorChanged()之前,先判斷顏色是否變化。
總結(jié):
QML的屬性綁定是非常實(shí)用的。你只需要在信號(hào)前添加一個(gè)NOTIFY的聲明就可以了。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的QML和C++混合编程--(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QML和C++混合编程--(二)
- 下一篇: Qt中qDebug()技巧初探