QML和C++混合编程--(二)
生活随笔
收集整理的這篇文章主要介紹了
QML和C++混合编程--(二)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- QML和C++混合編程--(二)之QML連接C++方法和信號(hào)
- 簡介:
- 一、修改app.qml 文件
- 二、修改c++中的類
QML和C++混合編程–(二)之QML連接C++方法和信號(hào)
簡介:
在上一篇中,我們講到PieChart類的自定義,并且將該圖形顯示出來。本篇我們?cè)赒ML中添加“ "clearChart()"方法,使能能夠刪除圖形。
效果如下:

一、修改app.qml 文件
那么首先我們需要在app.qml中能夠調(diào)用clearChart() 方法,并且接收chartCleared()信號(hào)。
修改代碼如下:
import Charts 1.0import QtQuick 2.0Item {width: 300; height: 200PieChart {id: aPieChartanchors.centerIn: parentwidth: 100; height: 100color: "red"onChartCleared: console.log("The chart has been cleared")}MouseArea {anchors.fill: parentonClicked: aPieChart.clearChart()}Text {anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }text: "Click anywhere to clear the chart"}}二、修改c++中的類
我們?cè)赾++ 類中添加clearChart()方法和chartCleared() 信號(hào)
class PieChart : public QQuickPaintedItem{...public:...Q_INVOKABLE void clearChart();signals:void chartCleared();...};這里,因?yàn)槭荙t Meta-Object system,,我們用到Q_INVOKABLE來使得clearChart()方法可用。
當(dāng)然,在QML中 可聲明為槽也是可行的。這兩種方法都是行得通的。
要clearChart() 方法很簡單,只需要將color設(shè)置為Qt::transparent,然后重繪chart,然后再發(fā)送chartCleared()信號(hào):
void PieChart::clearChart(){setColor(QColor(Qt::transparent));update();emit chartCleared();}現(xiàn)在,我們來運(yùn)行下應(yīng)用程序,單擊窗體,可以看到pie chart 消失了,且應(yīng)用程序輸出了一串文本消息:
qml: The chart has been cleared
本篇翻譯自Qt 的官方文檔
Writing QML Extensions with C++ 之 Chapter2
總結(jié)
以上是生活随笔為你收集整理的QML和C++混合编程--(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QML和C++混合编程--(一)
- 下一篇: s3c2440移植MQTT