• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            1.導出Person類,并且一個Job類,Job類包含一個Person的指針

            2.具體導出過程

            1.通過屬性來實現,具體的請看代碼


            3.具體代碼



            // person.h
            #ifndef PERSON_H
            #define PERSON_H
            #include <QObject>
            #include <QColor>
            class Person : public QObject
            {
                Q_OBJECT
                // 設置設置屬性的名字是 name
                // 對應讀取函數名字 getName
                // 對應寫函數名字 setName
                // 屬性發生改變后發送信號 sendNameChange
                Q_PROPERTY(QString name READ getName WRITE setName NOTIFY sendNameChange)
               // 設置設置屬性的名字是 age
               // 對應讀取函數名字 getAge
               // 對應寫函數名字 setAge
               // 屬性發生改變后發送信號 sendAgeChange
               Q_PROPERTY(int age READ getAge WRITE setAge NOTIFY sendAgeChange)
            public:
                explicit Person(QObject *parent = 0);
                QString getName(void) const;
                void setName(const QString& name);
                int getAge(void);
                void setAge(int age);
            signals:
                void sendNameChange(void);
                void sendAgeChange(void);
            private:
                QString     m_Name;
                int         m_Age;
            };
            /*
             設想一份工作給予一個人
             */
            class Job : public QObject
            {
                Q_OBJECT
                Q_PROPERTY(Person *per READ getPerson WRITE setPerson NOTIFY sendPersonChange)
                Q_PROPERTY(QString jn READ getJobName WRITE setJobName NOTIFY sendJobNameChange)
            public:
                explicit Job(QObject *parent = 0);
                ~Job();
                void setPerson(Person *per);
                Person *getPerson(void) const;
                void setJobName(const QString & jobname);
                QString getJobName(void) const;
            signals:
                void sendPersonChange();
                void sendJobNameChange();
            private:
                Person *m_Person;
                QString m_JobName;
            };
            #endif // PERSON_H


            // person.cpp
            #include "person.h"
            //---------------------------------
            //
            Person::Person(QObject *parent) :
                QObject(parent), m_Name("unknow"), m_Age(0)
            {
            }
            //---------------------------------
            //
            QString Person::getName(void) const
            {
                return m_Name;
            }
            //---------------------------------
            //
            void Person::setName(const QString& name)
            {
                m_Name = name;
                emit sendNameChange();
            }
            //---------------------------------
            //
            int Person::getAge(void)
            {
                return m_Age;
            }
            //---------------------------------
            //
            void Person::setAge(int age)
            {
                m_Age = age;
                emit sendAgeChange();
            }
            //---------------------------------
            //
            Job::Job(QObject *parent)
                :QObject(parent), m_Person(0), m_JobName("unknown")
            {
            }
            //---------------------------------
            //
            Job::~Job()
            {
            }
            //---------------------------------
            //
            void Job::setPerson(Person *per)
            {
                m_Person = per;
                emit sendPersonChange();
            }
            //---------------------------------
            //
            Person *Job::getPerson(void) const
            {
                return m_Person;
            }
            //---------------------------------
            //
            void Job::setJobName(const QString & jobname)
            {
                m_JobName = jobname;
                emit sendJobNameChange();
            }
            //---------------------------------
            //
            QString Job::getJobName(void) const
            {
                return m_JobName;
            }


            // main.cpp
            #include <QtGui/QApplication>
            #include <QtDeclarative/QDeclarativeView>
            #include <QtDeclarative/QDeclarativeEngine>
            #include <QtDeclarative/QDeclarativeComponent>
            #include "person.h"
            int main(int argc, char *argv[])
            {
                QApplication a(argc, argv);
                qmlRegisterType<Person>("People",1,0,"Person");
                //qmlRegisterType<Person>();
                qmlRegisterType<Job>("People",1,0,"Job");
                QDeclarativeView qmlView;
                qmlView.setSource(QUrl::fromLocalFile("../UICtest/UICtest.qml"));
                qmlView.show();
                return a.exec();
            }


            // UICtest.qml
            import Qt 4.7
            import People 1.0 //如果是qmlRegisterType<Person>(); 導出就可以注釋這條
            Rectangle {
                width: 640
                height: 480
                Job {
                    id: jobA;
                    jn: "Learn";
                    per: Person { id: ps; name: "Luly"; age: 25; }
                }
                // 顯示這份工作的一些信息
                Rectangle{
                    x: 100; y: 100;
                    width: 100; height: 100;
                    Text { text: "Job name:" + jobA.jn; }
                    Text { y: 20; text: "Person name:" + ps.name; }
                    Text { y: 40; text: "Person age:"  + ps.age; }
                }
                MouseArea{
                    anchors.fill: parent;
                    onClicked:{
                        // 我要改變工作的名字 工作人的信息
                        jobA.jn = "Clean House";
                        ps.name = "Tom";
                        ps.age = 30;
                    }
                }
            }


            說明:

            主要是導出了兩個類PersonJob, Job 包含一個Person的指針,這樣后,可以看到

            QML中,我們需要給予Job對象一個Person來盡心賦值。


            欧美性猛交xxxx免费看久久久| 国产韩国精品一区二区三区久久 | 99久久精品毛片免费播放| 久久久久亚洲AV成人片| 色综合久久久久网| 伊人久久综合精品无码AV专区| 久久青青草原精品国产| 久久久不卡国产精品一区二区 | 性做久久久久久久| 久久精品18| 国产精品久久久久久久| 久久人人爽人人爽人人片AV东京热| 99国产精品久久| 午夜精品久久久久久99热| 久久精品国产国产精品四凭| 久久婷婷五月综合97色一本一本| 久久久久九国产精品| 久久大香香蕉国产| 久久久国产打桩机| 天堂无码久久综合东京热| 久久最新精品国产| 久久精品成人免费网站| 99久久无色码中文字幕人妻| 欧洲性大片xxxxx久久久| 精品国产婷婷久久久| 久久精品男人影院| 国产精品国色综合久久| 久久精品国产亚洲av麻豆小说| 亚洲伊人久久综合中文成人网| 久久人人爽人人精品视频| 久久综合综合久久狠狠狠97色88| 亚洲AV日韩精品久久久久久久 | 日本免费一区二区久久人人澡| 少妇人妻88久久中文字幕| 亚洲精品无码久久久影院相关影片 | 久久综合久久综合亚洲| 色综合合久久天天给综看| 久久只有这精品99| 伊人久久大香线蕉综合Av| 奇米综合四色77777久久| 久久夜色精品国产网站|