C++ 错误:';abc&x27;没有名称类型QT c++;GUI应用程序

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

底线是我有两个表单,第一个主窗口第二个表单1。我在主窗口上有一个显示表单2的按钮。现在我在form1上有一个按钮,它应该把我带到主窗口,但它不工作。问题是当我说#include in form1.h时,它给了我一个错误,即mainwindow没有名称类型。请帮助,如果可能的话,工作示例将非常好。实际错误是MainWindow没有名称类型

主窗口

#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;