作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了基类 - MainWindow。在这个类中,我创建了另一个类“SecondWindow”的对象。通过使用 SecondWindow 的对象,我想使用在基类中定义的 function() 方法。我该怎么做?
我试图将我的基类作为参数传递给 SecondWindow 对象,但这没有用(可能是因为在 MainWindow 中我包含了“secondWindow.h”,而在 SecondWindow 中我试图包含“mainwindow.h” header 文件)。有没有办法简单地使用基类的函数/变量?
主窗口.h
#include<QMainWindow>
#include "secondwindow.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
SecondWindow *secondWindow;
void function();
}
主窗口.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();
}
第二个窗口.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/
我是一名优秀的程序员,十分优秀!