<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                本系列所有文章可以在這里查看[http://blog.csdn.net/cloud_castle/article/category/2123873](http://blog.csdn.net/cloud_castle/article/category/2123873) 又是一個新的系列了,不過這個系列和我們之前的Chapter系列是及其相似的,但是不過呢,Chapter主要演示了如何使用C++創建具有可視性的類型以擴展我們的QML,而這個系列則關注于如何使用C++擴展QML非可視化的內容。 這里第一個小例子與Chapter的第一個小例子及其類似: ![](https://box.kancloud.cn/2016-01-18_569cbd0815180.jpg) person是我們自定義的C++類,然后我們將其注冊為QML類型供資源文件中的example.qml使用。 person.h,這個類與之前的piechart沒有太大區別: ~~~ #ifndef PERSON_H #define PERSON_H #include <QObject> //![0] class Person : public QObject // 要注意的是由于這個對象并不需要可視化,我們繼承最基礎的QObject就可以了 { Q_OBJECT // 因為QML組件基于元對象系統,所以QObject和Q_OBJECT都不能少 Q_PROPERTY(QString name READ name WRITE setName) // 兩個自定義屬性 Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize) public: Person(QObject *parent = 0); QString name() const; void setName(const QString &); int shoeSize() const; void setShoeSize(int); private: QString m_name; int m_shoeSize; }; //![0] ~~~ person.cpp: ~~~ #include "person.h" // ![0] Person::Person(QObject *parent) : QObject(parent), m_shoeSize(0) { } QString Person::name() const { return m_name; } void Person::setName(const QString &n) { m_name = n; } int Person::shoeSize() const { return m_shoeSize; } void Person::setShoeSize(int s) { m_shoeSize = s; } ~~~ example.qml: ~~~ import People 1.0 Person { // 非可視化組件,我們也不再需要以Item作為父對象 name: "Bob Jones" shoeSize: 12 } ~~~ main.cpp: ~~~ #include <QCoreApplication> // 注意到Chapter中為QGuiApplication #include <QQmlEngine> // 提供QML組件的運行環境 #include <QQmlComponent> // 提供對QML組件的封裝與訪問 #include <QDebug> #include "person.h" int main(int argc, char ** argv) { QCoreApplication app(argc, argv); //![0] qmlRegisterType<Person>("People", 1,0, "Person"); // 注冊QML類型 //![0] QQmlEngine engine; QQmlComponent component(&engine, QUrl("qrc:example.qml")); // 獲取QML文件中的組件 Person *person = qobject_cast<Person *>(component.create()); // 創建該組件的實例化對象 if (person) { qWarning() << "The person's name is" << person->name(); // 依然是通過->訪問其成員函數 qWarning() << "They wear a" << person->shoeSize() << "sized shoe"; } else { qWarning() << component.errors(); // 類型轉換失敗則輸出錯誤信息 } return 0; } ~~~ 由于沒有界面,實際運行就是一行控制臺的輸出: ![](https://box.kancloud.cn/2016-01-18_569cbd08271ca.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>

                              哎呀哎呀视频在线观看