<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                本系列所有文章可以在這里查看[http://blog.csdn.net/cloud_castle/article/category/2123873](http://blog.csdn.net/cloud_castle/article/category/2123873) 接上文[Qt5官方demo解析集17——Chapter 3: Adding Property Bindings](http://blog.csdn.net/cloud_castle/article/details/36886779) 在前面的“餅狀圖”Demo中,我們為這個自定義類型定義了"name"和"color"屬性,他們都是基于Qt內置類型"QString"和"QColor",這個例子則向我們演示了如何為這個PieChart添加自定義類型的屬性。使用自定義類型的屬性,更方便我們模塊化編程。 這個項目中多了一個pieslice類,它用于餅狀圖的實際繪制,而PieChart僅用來提供框架: ![](https://box.kancloud.cn/2016-01-18_569cbd07a35e1.jpg) piechart.h: ~~~ #ifndef PIECHART_H #define PIECHART_H #include <QtQuick/QQuickItem> class PieSlice; //![0] class PieChart : public QQuickItem // 由于這個類不再需要進行實際繪制,所以繼承自QQuickItem就可以了 { Q_OBJECT Q_PROPERTY(PieSlice* pieSlice READ pieSlice WRITE setPieSlice) // 我們定義了pieSlice屬性,它是一個PieSlice類的指針 //![0] Q_PROPERTY(QString name READ name WRITE setName) // color屬性被移至PieSlice中 //![1] public: //![1] PieChart(QQuickItem *parent = 0); QString name() const; void setName(const QString &name); //![2] PieSlice *pieSlice() const; void setPieSlice(PieSlice *pieSlice); //![2] private: QString m_name; PieSlice *m_pieSlice; //![3] }; //![3] #endif ~~~ piechart.cpp: ~~~ #include "piechart.h" #include "pieslice.h" PieChart::PieChart(QQuickItem *parent) : QQuickItem(parent) { } QString PieChart::name() const { return m_name; } void PieChart::setName(const QString &name) { m_name = name; } PieSlice *PieChart::pieSlice() const { return m_pieSlice; } //![0] void PieChart::setPieSlice(PieSlice *pieSlice) { m_pieSlice = pieSlice; pieSlice->setParentItem(this); // QML的可視化組件必須擁有一個父對象,否則無法顯示 } //![0] ~~~ 將具體繪制放在一個單獨的類中,pieslice.h: ~~~ #ifndef PIESLICE_H #define PIESLICE_H #include <QtQuick/QQuickPaintedItem> #include <QColor> //![0] class PieSlice : public QQuickPaintedItem // 繼承這個類以重載Paint { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor) public: PieSlice(QQuickItem *parent = 0); QColor color() const; void setColor(const QColor &color); void paint(QPainter *painter); private: QColor m_color; }; //![0] #endif ~~~ pieslice.cpp: ~~~ #include "pieslice.h" #include <QPainter> PieSlice::PieSlice(QQuickItem *parent) : QQuickPaintedItem(parent) { } QColor PieSlice::color() const { return m_color; } void PieSlice::setColor(const QColor &color) { m_color = color; } void PieSlice::paint(QPainter *painter) { QPen pen(m_color, 2); painter->setPen(pen); painter->setRenderHints(QPainter::Antialiasing, true); painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16); } ~~~ main.cpp: ~~~ #include "piechart.h" #include "pieslice.h" #include <QtQuick/QQuickView> #include <QGuiApplication> //![0] int main(int argc, char *argv[]) { //![0] QGuiApplication app(argc, argv); qmlRegisterType<PieChart>("Charts", 1, 0, "PieChart"); // 注冊這兩個C++類,定義在一個命名空間中 //![1] qmlRegisterType<PieSlice>("Charts", 1, 0, "PieSlice"); //![1] QQuickView view; view.setResizeMode(QQuickView::SizeRootObjectToView); view.setSource(QUrl("qrc:///app.qml")); view.show(); return app.exec(); //![2] } //![2] ~~~ app.qml: ~~~ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: chart anchors.centerIn: parent width: 100; height: 100 pieSlice: PieSlice { // PieSlice屬性的設置 anchors.fill: parent color: "red" } } Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color) // 最后在組件完成時顯示這個餅狀圖的RGB值 } //![0] ~~~ ![](https://box.kancloud.cn/2016-01-18_569cbd07b8e03.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看