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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第十六课、Qt对象间的父子关系------------------狄泰软件学院

發(fā)布時間:2024/4/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十六课、Qt对象间的父子关系------------------狄泰软件学院 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Qt對象間的關系

1、Qt對象間可以存在父子關系

(1)、每個對象都保存有它所有子對象的指針

(2)、每一個對象都有一個指向其父對象的指針

2、當指定Qt對象的父對象時

(1)、其父對象會在子對象鏈表中加入該對象的指針

(2)、該對象會保存指向其父對象的指針

#include <QtCore/QCoreApplication> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QObject* p = new QObject();QObject* c1 = new QObject();QObject* c2 = new QObject();c1->setParent(p);c2->setParent(p);qDebug() << c1;qDebug() << c2;const QObjectList list = p->children();for(int i=0; i<list.length(); i++){qDebug() << list[i];//打印的兩個分別與c1和c2一樣 }qDebug() << c1->parent();qDebug() << c2->parent();qDebug() << p;//三個打印的值都一樣return a.exec(); } View Code

3、當對象被銷毀時

(1)、將自己從父對象的Children List移除

(2)、將自己的Children List中的所有對象銷毀

注:使用Qt開發(fā)時,不僅要時刻注意內存泄漏的問題,還要時刻關注對象是否可能被多次銷毀的問題

4、對象樹

(1)、利用Qt對象間的父子關系可以構成對象樹

(2)、刪除樹中的節(jié)點時會導致對應的子樹被銷毀

#include <QtCore/QCoreApplication> #include <QDebug> class MObj : public QObject//Qt對象采用父子間的關系 {QString m_name; public:MObj(const QString& name){m_name = name;qDebug() << "Constructor: " << m_name;}~MObj(){qDebug() << "Destructor: " << m_name;} };void delTest() {MObj* obj1 = new MObj("obj1");MObj* obj2 = new MObj("obj2");MObj* obj3 = new MObj("obj3");MObj* obj4 = new MObj("obj4");//調用四次構造函數(shù) obj2->setParent(obj1);obj3->setParent(obj1);obj4->setParent(obj3);delete obj3;//會同時銷毀obj3和obj4// delete obj4;//運行會發(fā)生錯誤,相當于對obj4銷毀了兩次const QObjectList& list = obj1->children();qDebug() << "obj2: " << obj2;for(int i=0; i<list.length(); i++){qDebug() << list[i];}}int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);delTest();return a.exec(); } View Code

二、小結

(1)、Qt對象間可以存在父子關系

(2)、通過父子關系能夠獲得Qt對象樹

(3)、Qt對象銷毀時解除和父對象間的父子關系

(4)、Qt對象銷毀時將同時銷毀所有的子對象

轉載于:https://www.cnblogs.com/gui-lin/p/6399250.html

總結

以上是生活随笔為你收集整理的第十六课、Qt对象间的父子关系------------------狄泰软件学院的全部內容,希望文章能夠幫你解決所遇到的問題。

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