C++ 错误:';abc&x27;没有名称类型QT c++;GUI应用程序
底线是我有两个表单,第一个主窗口第二个表单1。我在主窗口上有一个显示表单2的按钮。现在我在form1上有一个按钮,它应该把我带到主窗口,但它不工作。问题是当我说#include in form1.h时,它给了我一个错误,即mainwindow没有名称类型。请帮助,如果可能的话,工作示例将非常好。实际错误是MainWindow没有名称类型 主窗口C++ 错误:';abc&x27;没有名称类型QT c++;GUI应用程序,c++,forms,qt,user-interface,C++,Forms,Qt,User Interface,底线是我有两个表单,第一个主窗口第二个表单1。我在主窗口上有一个显示表单2的按钮。现在我在form1上有一个按钮,它应该把我带到主窗口,但它不工作。问题是当我说#include in form1.h时,它给了我一个错误,即mainwindow没有名称类型。请帮助,如果可能的话,工作示例将非常好。实际错误是MainWindow没有名称类型 主窗口 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #inc
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <form1.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui; // i put this line of code in public section when i was trying ui->show(); in form1.cpp file
Form1 obj ; // to show next form
};
#endif // MAINWINDOW_H
表格1.h
#ifndef FORM1_H
#define FORM1_H
#include <QWidget>
#include<mainwindow.h>
namespace Ui {
class Form1;
}
class Form1 : public QWidget
{
Q_OBJECT
public:
explicit Form1(QWidget *parent = 0);
~Form1();
private slots:
void on_pushButton_clicked();
private:
Ui::Form1 *ui;
MainWindow mw ; // here i am making object of main window
};
#endif // FORM1_H
\ifndef FORM1\u H
#定义表格1_H
#包括
#包括
名称空间用户界面{
类别表格1;
}
类Form1:公共QWidget
{
Q_对象
公众:
显式Form1(QWidget*parent=0);
~Form1();
专用插槽:
单击按钮时无效();
私人:
Ui::Form1*Ui;
MainWindow mw;//这里我正在制作主窗口的对象
};
#endif//FORM1_H
表格1.cpp
#include "form1.h"
#include "ui_form1.h"
#include<mainwindow.h> // i know when i include this there this issue occurs , but i want to go my previous form to show and for that i have to make its object ! thats how it works when i am going to my next form i.e form1 now i want to go back
Form1::Form1(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form1)
{
ui->setupUi(this);
}
Form1::~Form1()
{
delete ui;
}
void Form1::on_pushButton_clicked() // show mainWindow
{
mw->show();
this->hide();
//MainWindow::ui->show(); // i even tried this
}
#包括“form1.h”
#包括“ui_form1.h”
#include//我知道当我把它包括进来的时候,这个问题就发生了,但是我想用我以前的表单来显示,为此我必须创建它的对象!这就是我上下一个年级时的工作原理,也就是说,现在我想回去了
Form1::Form1(QWidget*父项):
QWidget(母公司),
ui(新ui::Form1)
{
用户界面->设置用户界面(此);
}
Form1::~Form1()
{
删除用户界面;
}
void Form1::在按钮上单击()//显示主窗口
{
mw->show();
这个->隐藏();
//MainWindow::ui->show();//我甚至试过这个
}
我还试着通过输入Ui::mainwindow*Ui,在form1.h中不包含mainwindow.h;在public部分中,我可以通过键入MainWindow::ui->show()来访问form1.cpp文件;此时间错误表示对象缺少对“MainWindow::ui”的引用。类
MainWindow
和Form1
之间存在循环依赖关系。因此,在mainwindow.h
中包含form1.h
,在form1.h
中包含mainwindow.h
。当编译器到达该行时
MainWindow mw ; // here i am making object of main window
这是他第一次遇到符号main window
,并触发该错误
我仍然不明白为什么mw
是Form1的成员,但是您可以使用指针来打破依赖关系。基本上你现在有
MainWindow* mw ;
而不是#将包含在表单1.h
中,您只需向前声明即可
class MainWindow;
main window.h
?一些操作系统使用区分大小写的名称(大多数是*nix名称),因此可能会导致麻烦。另外,发布准确的错误。@zeta,这是错误:“mainWindow”没有名称type@Zeta你可以看到代码。IDE自动生成主窗口的表单,因为它是第一个表单。所以我不认为区分大小写才是真正的问题。我刚刚尝试了所有的#包括,#包括#包括和#包括没有用:(!Zeta无论如何谢谢:)@Zeta,我在表单中尝试了它们。为您的问题添加了其他信息,而不是在评论中。确保你的问题容易理解。目前,它或多或少是一堵代码墙。试着把它缩减到最基本的部分(同时,在这一点上,我试图改进你的问题,而不是回答它;这将是一个答案,而不是评论:D)。谢谢你的回答:)我尝试实施了一段时间,但你的回答对我来说不起作用:)为什么mw是Form1的成员,因为form1表单上有一个按钮,在这个按钮后面我想写一个代码来显示mainwindow表单,为此我必须在form1.h中创建mainwindow的对象,所以在form1.cpp中我可以使用它。我尝试实现了一段时间,但它不起作用,它给出了另一个错误:请求成员'show'in'((Form1*)this)->Form1::mw',它是非类类型的'MainWindow*'
class MainWindow;