日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Qt C++属性类型提供给 QML调用(四)

發布時間:2025/1/21 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt C++属性类型提供给 QML调用(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

前面已經介紹了三種關于 QML 調用 C++的屬性方法,那么,今天繼續介紹一種新的屬性調用:分組屬性。

分組屬性

QML 調用 C++的分組屬性,所謂的分組屬性, 其實和第二篇文章介紹的調用類屬性有些類似,寫法有點類似下面這種形式:

Rectangle{anchors.left: ...anchors.leftMargin:... }

這其實就是一個分組屬性,這兩個屬性都是屬于anchors組的。
但是這里需要注意的是,分組屬性僅僅和對象屬性的寫法相同,但是其實際上有比較大的區別,因為分組屬性是只讀的,并且在構造時由父對象初始化為有效值。分組屬性的子屬性可以從QML修改,但分組屬性對象本身永遠不會改變,而對象類型屬性可以隨時從QML分配一個新的對象值。因此,分組屬性對象的生命周期嚴格受C ++父實現控制,而對象類型屬性可以通過QML代碼自由創建和銷毀。

那么如何去調用 C++的分組屬性呢,來看看以下示例:

class StudentInfo : public QObject {Q_OBJECTQ_PROPERTY(QString className READ getClass WRITE setClass)Q_PROPERTY(QString address READ getAddress WRITE setAddress) public:explicit StudentInfo(QObject * parent = 0):QObject(parent) {}void setClass(const QString & c){if(c != m_class){m_class = c;}}QString getClass()const{return m_class;}void setAddress(const QString & a){if(a != m_address){m_address = a;}}QString getAddress()const{return m_address;}private:QString m_class;QString m_address; };class Student : public QObject {Q_OBJECTQ_PROPERTY(QString name READ getName WRITE setName NOTIFY sigNameChanged)Q_PROPERTY(StudentInfo* info READ getInfo)public:explicit Student(QObject *parent = nullptr):QObject(parent){m_info = new StudentInfo(this);}~Student(){}void setName(const QString & name){if(name != m_name){m_name = name;emit sigNameChanged(m_name);}}QString getName() const {return m_name;}StudentInfo * getInfo(){return m_info;}signals:void sigNameChanged(QString name);private:QString m_name;StudentInfo * m_info = NULL;};

然后在 Main 函數中注冊:

qmlRegisterType<Student>("Student", 1, 0, "Student"); qmlRegisterType<StudentInfo>("StudentInfo", 1, 0, "StudentInfo");

在 QML 中進行調用:

Student{info.className:"aaa"info.address:"bbb" }

然后我們會到 main函數中將信息輸出:

QQmlEngine engine; QQmlComponent component(&engine, QUrl("qrc:main.qml")); Student *student = qobject_cast<Student *>(component.create());if(student){qWarning() << " " << student->getInfo()->getAddress() << student->getInfo()->getClass() ; }

編譯運行,輸出如下:

"bbb" "aaa"

其實用法很簡單,就不再多說啦。
代碼在這里

總結

以上是生活随笔為你收集整理的Qt C++属性类型提供给 QML调用(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美精品久久久久久久久 | 色哟哟视频 | 午夜激情影视 | 大地资源中文在线观看免费版 | 性欧美bb| 亚洲欧美一区二区视频 | 亚洲经典av | 污夜影院| 欧美黑人一级片 | 精品动漫一区二区三区的观看方式 | 国产超碰人人 | 超碰成人97 | 91精品婷婷国产综合久久竹菊 | 国产一区日本 | 免费看黄色一级大片 | 国产福利资源在线 | 一本大道久久久久精品嫩草 | 91免费短视频 | 亚洲美女av在线 | 成年人免费在线视频 | 欧美日韩aa | 日韩美一区二区三区 | a级在线视频 | 中国在线观看视频高清免费 | 精品视频久久久 | 日韩a级片 | 亚洲毛片在线 | 久久伊人婷婷 | 国产毛片久久久 | 青青青国产视频 | 成人乱码一区二区三区 | 欧洲精品在线观看 | 乳女教师の诱惑julia | 又污又黄又爽的网站 | 欧美日韩一二三四区 | 玖玖爱免费视频 | 人人干美女| 国产精品亚洲第一 | 美女污污网站 | 日本波多野结衣在线 | 亚洲综合情 | 久久网免费视频 | 亚洲欧美日韩在线看 | 天堂岛av| 少妇粉嫩小泬喷水视频www | 国产精一区 | 波多野结衣在线电影 | 毛片视频免费 | 午夜少妇av | 中文字幕资源站 | 国产精品高潮呻吟久久av野狼 | 青青草在线免费视频 | 久久久久高清 | 久久av网站 | 一级黄色毛毛片 | 免费看日韩av| 强行无套内谢大学生初次 | 亚洲av永久无码精品放毛片 | 国语对白对话在线观看 | 久久久久人妻精品一区二区三区 | 欧美在线一区二区 | 日韩欧美不卡在线 | 国产美女网站 | 日韩一区二区在线播放 | 国产毛片久久久久久国产毛片 | 国精产品一区一区三区有限公司杨 | 女人叉开腿让男人桶 | 99伊人| 福利在线视频观看 | 久久亚洲一区 | 免费国产在线观看 | 久久影院一区二区 | 黑人极品videos精品欧美裸 | 男女乱淫| 已满十八岁免费观看 | 视频一区 中文字幕 | 国产人妻黑人一区二区三区 | 香蕉视频亚洲一级 | 日本三级免费看 | 国产综合久久久久久鬼色 | 热播之家 | 美景之屋电影免费高清完整韩剧 | 青青操视频在线播放 | 日韩在线观看视频一区二区三区 | 四虎最新域名 | 丝袜中文字幕 | 一级欧美一级日韩 | 少妇高潮一区二区三区99刮毛 | 九九热在线精品视频 | 国产精品一区二区三区线羞羞网站 | 日本aⅴ视频 | 日韩欧美中文 | 欧美顶级少妇做爰 | 91精品国产aⅴ一区 黄色a网 | 中文字幕黑丝 | 日本一区二区不卡视频 | 天天爽夜夜爽人人爽 | 天天操天天摸天天干 | 亚洲色图欧美日韩 |