我创建了基类-MainWindow。在该类中,我创建另一个类“ SecondWindow”的对象。通过使用SecondWindow的对象,我想使用基类中定义的function()方法。我怎样才能做到这一点?
我试图将我的基类作为参数传递给SecondWindow对象,但这没有用(可能是因为在MainWindow中我包含了“ secondWindow.h”,在SecondWindow中我试图包含了“ mainwindow.h”头文件)。有没有办法简单地使用基类的函数/变量?
主窗口
#include<QMainWindow>
#include "secondwindow.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
SecondWindow *secondWindow;
void function();
}
主窗口
#include "mainwindow.h"
MainWindow::MainWindow()
{
secondWindow = new secondWindow();
function();
}
void MainWindow::function()
{
qDebug()<<"yes";
}
第二窗口
class SecondWindow : public QMainWindow
{
Q_OBJECT
public:
SecondWindow();
}
secondwindow.cpp
#include "secondwindow.h"
SecondWindow::SecondWindow()
{
//here I want to use function();
}
最佳答案
您可能想要继承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;
关于c++ - Qt:如何将基类转移到该类中创建的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47437397/