Qt C ++内部类访问外部类

时间:2017-01-16 11:50:29

标签: c++ qt inner-classes outer-classes

我又有一个问题: 我有一个类PBV t(继承自Tab)帽子有一个类几何。 Geometry是Geo_1的父级。从Geo_1我想要访问PBV的方法(例如printContent。我该怎么做?我能够创建信号槽但是因为我必须经常使用PBV的方法信号槽。 这是我的代码:

PBV.h:

#include "../Geometry/Geo_1.h"

 class PBV : public Tab
 {
     Q_OBJECT    
 public:
     explicit PBV (QWidget *parent = 0);
     ~ PBV ();
     virtual void printContent( QStringList *const qsl);

private:    
    Geo_1 *GEO_1;
    Geometry *GEO;
 }

PBV.cpp:

 …
 Geo_1 *GEO_1;
 GEO_1 = new Geo_1(this);
 GEO_1->set_LNE_default();
 …

Geo_1.h:
#ifndef GEO_1_H
#define GEO_1_H 
#include "Geometry.h"
#include "../Tabs/PBV.h"
class Geo_1: public Geometry
{
   Q_OBJECT
public:
    Geo_1 (QObject *_parent = 0);
    virtual void set_LNE_default();
};  
#endif // GEO_1_H

Geo_1.cpp:
#include "Geometry.h"
#include <QDebug>
#include "Geo_1.h"
#include "../Tabs/PBV.h"

Geo_1::Geo_1(QObject*_parent)
: Geometry(_parent) {}

void Geo_1::set_LNE_default()
{
    // here I want to use printContent  
}

Geometry.h:

 #ifndef GEOMETRY_H
 #define GEOMETRY_H
 #include <QObject>

 class Geometry : public QObject
 {
     Q_OBJECT
 public:
     Geometry(QObject *_parent=0);
     ~Geometry();
     virtual void set_LNE_default();
 };
 #endif // GEOMETRY_H

Geometry.cpp:

 #include "Geometry.h"
 #include <QDebug>

 Geometry::Geometry(QObject *_parent)
     : QObject(_parent)     {}

 Geometry::~Geometry(){}
 void Geometry::set_LNE_default() { }

1 个答案:

答案 0 :(得分:0)

注释所指的一种方法是跟踪子项构造函数中的父类:

在Geometry.h中,添加一个私有成员变量:

private: 
  PBV* m_pParentPBV;

然后,在Geometry.cpp的构造函数中,将其设置为您已传递的父级:

Geometry::Geometry(QObject *_parent)
     : QObject(_parent)     
{
    m_pParentPBV = dynamic_cast<PBV*>(_parent);
}

现在,您可以使用m_pParentPBV->printContent()等来调用父级的方法。