QObject(2) - 子对象

    技术2024-07-07  70

    QObject提供了一些与子对象相关的机制。 这此用到的函数有:     1    QObject *    parent () const    得到父对象指针        2    void    setParent ( QObject * parent )    设置父对象     3    const QObjectList &    children () const    得到所有子对象     4    T    findChild ( const QString & name = QString() ) const    得到某个子对象     5    QList<T>    findChildren ( const QString & name = QString() ) const    得到某些子对象     6    QList<T>    findChildren ( const QRegExp & regExp ) const    得到某些子对象     7    void    setObjectName ( const QString & name )    设置对象名称     8    QString    objectName () const    得到对象名称 具体事项请看官方帮助文档,简要的例子请看下面例子。 例1:         文件         main.cpp    GwObject.h    GwObject.h     说明         这次主要东西都在main函数中,注释很明白。。。         GwObject中只是为了方便改了一点点构造函数。     代码         //main.cpp #include <QtCore/QCoreApplication> #include "GwObject.h" #include <QDebug> #include <QList> #include <QRegExp> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); //初始化 //定义了关系与名字 GwObject *g0,*g1,*g2,*g3,*g4,*g5,*g6; g0 = new GwObject(0,"A1"); g1 = new GwObject(g0,"B1"); g2 = new GwObject(g0,"B2"); g3 = new GwObject(g1,"C1"); g4 = new GwObject(g1,"C2"); g5 = new GwObject(g1,"C3"); g6 = new GwObject(g1,"C3"); int i; //任务1 //列出g0的直接子对象 qDebug() << "task1 : "; QObjectList list; list = g0->children(); for (i = 0;i < list.length();i++) qDebug() << list.at(i)->objectName(); qDebug(); //任务2 //列出所有g0的直接与间接子对象中,符合某个正则的所有对象 (多个) qDebug() << "task2 : "; QList <GwObject*> list2; list2 = g0->findChildren<GwObject*>(QRegExp("[A-C][0-9]*")); for (i = 0;i < list2.length();i++) qDebug() << list2.at(i)->objectName(); qDebug(); //任务3 //找到所有g0的直接与间接子对象中,名字为C3的某些对象 (多个) qDebug() << "task3 : "; list2 = g0->findChildren<GwObject*>(QString("C3")); for (i = 0;i < list2.length();i++) qDebug() << list2.at(i)->objectName(); qDebug(); //任务4 //找到所有g0的直接与间接子对象中,名字为B1的某个对象 (单个) qDebug() << "task4 : "; GwObject* result; result = g0->findChild<GwObject*>(QString("B1")); qDebug() << result->objectName(); result->deleteLater(); qDebug(); //退出 g0->deleteLater(); QObject::connect(g0,SIGNAL(destroyed()),&app,SLOT(quit())); return app.exec(); }

                //GwObject.h #ifndef GWOBJECT_H #define GWOBJECT_H #include <QObject> class GwObject : public QObject { Q_OBJECT public: explicit GwObject(QObject *parent = 0,const QString& name = ""); signals: public slots: }; #endif // GWOBJECT_H         //GwObject.cpp #include "GwObject.h" GwObject::GwObject(QObject *parent,const QString& name) : QObject(parent) { setObjectName(name); } 

    最新回复(0)