我已经创建了基类 - MainWindow。在这个课程中,我创建另一个类的对象" SecondWindow"。通过使用SecondWindow的对象,我想使用在基类中定义的function()方法。我怎么能这样做?
我试图将我的基类作为参数传递给SecondWindow对象,但那不起作用(可能是因为我在MainWindow中包含" secondWindow.h"在SecondWindow中我是试图包括" mainwindow.h"头文件)。有没有办法简单地使用基类的函数/变量?
mainwindow.h
#include<QMainWindow>
#include "secondwindow.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
SecondWindow *secondWindow;
void function();
}
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow()
{
secondWindow = new secondWindow();
function();
}
void MainWindow::function()
{
qDebug()<<"yes";
}
secondwindow.h
class SecondWindow : public QMainWindow
{
Q_OBJECT
public:
SecondWindow();
}
secondwindow.cpp
#include "secondwindow.h"
SecondWindow::SecondWindow()
{
//here I want to use function();
}
答案 0 :(得分:2)
你想继承你的MainWindow类,然后继承QMainWindow()
所以在secondwindow.h中你会改变
class SecondWindow : public QMainWindow
{
Q_OBJECT
public:
SecondWindow();
};
到
#include "mainwindow.h"
class SecondWindow : public MainWindow
{
Q_OBJECT
public:
SecondWindow();
};
然后您就可以在secondwindow.cpp中使用function()
了此外,您还有另一个问题,即您的主窗口使用指向第二个窗口的指针,但您将遇到循环依赖问题。 (您需要SecondWindow才能编译MainWindow,但是,您希望SecondWindow能够使用function()
)。
要解决此问题,您需要在MainWindow类中转发声明SecondWindow。
在mainwindow.h中,移除#include "secondwindow.h"
并将其替换为class SecondWindow;