界面c作为主界面a的子界面b的子界面,想访问主界面c的指针该怎么办,头文件和源文件的代码示例
时间: 2023-09-13 11:04:10 浏览: 77
如何获得应用程序主窗口的指针
首先在主界面A中定义一个指向子界面C的指针,然后在子界面B中传递该指针,这样就可以在子界面B中访问主界面C的指针了。
头文件示例:
```
// 主界面A.h
class SubWindowC; // 前置声明子界面C
class MainWindowA : public QMainWindow
{
Q_OBJECT
public:
MainWindowA(QWidget *parent = nullptr);
~MainWindowA();
private:
SubWindowB* m_subWindowB;
SubWindowC* m_subWindowC; // 定义指向子界面C的指针
};
// 子界面B.h
class SubWindowC; // 前置声明子界面C
class SubWindowB : public QDialog
{
Q_OBJECT
public:
SubWindowB(SubWindowC* subWindowC, QWidget *parent = nullptr);
private:
SubWindowC* m_subWindowC; // 存储指向主界面C的指针
};
// 子界面C.h
class MainWindowA; // 前置声明主界面A
class SubWindowC : public QDialog
{
Q_OBJECT
public:
SubWindowC(MainWindowA* mainWindowA, QWidget *parent = nullptr);
private:
MainWindowA* m_mainWindowA; // 存储指向主界面A的指针
};
```
源文件示例:
```
// 主界面A.cpp
MainWindowA::MainWindowA(QWidget *parent)
: QMainWindow(parent)
{
// 创建子界面B和子界面C
m_subWindowB = new SubWindowB(m_subWindowC, this);
m_subWindowC = new SubWindowC(this, this);
}
// 子界面B.cpp
SubWindowB::SubWindowB(SubWindowC* subWindowC, QWidget *parent)
: QDialog(parent)
{
m_subWindowC = subWindowC; // 存储指向主界面C的指针
}
// 子界面C.cpp
SubWindowC::SubWindowC(MainWindowA* mainWindowA, QWidget *parent)
: QDialog(parent)
{
m_mainWindowA = mainWindowA; // 存储指向主界面A的指针
}
```
阅读全文