Qt错误:C:\ Users \ user-pc \ Proj1 \ main.cpp:6:错误:变量' QApplication prog'有初始化程序但不完整的类型QApplication prog(argc,argv);

时间:2014-04-16 07:24:45

标签: c++ qt qt4 qtgui qmainwindow

我是Qt编程的新手,并遵循此tutorial

在本教程中,地球上有一个复杂的程序,它就是这样的:

#include "mainwindow.h"
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication prog(argc, argv);
    QLabel *l = new QLabel("Itay's First GUI in C++!!");
    l->show();
    return prog.exec();
}

出于某种原因我得到了这些错误:

C:\Users\user-pc\Tutorial\main.cpp:6: error: variable 'QApplication prog' has initializer but incomplete type
 QApplication prog(argc, argv);
                   ^
C:\Users\user-pc\Tutorial\main.cpp:10: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

有人可以告诉我这个原因吗?

3 个答案:

答案 0 :(得分:8)

您需要添加QApplication标题:

#include <QApplication>

答案 1 :(得分:0)

错误消息&#34;有初始化程序但类型不完整&#34;表示该类是前向声明的,未定义。

如前所述,#include <QApplication>解决了这个问题。

答案 2 :(得分:0)

  

我是Qt编程的新手,并且在本教程中遵循教程http://thenewboston.org/watch.php?cat=57&number=4,地球上有最复杂的程序,它就是这样的:

您没有提及要仔细收听视频。让我们看一下视频中的相关屏幕截图:

enter image description here

正如您所看到的,他们确实包括这一行:

#include <QtGui/QApplication>

您的代码遗失了,这就是为什么它不能编译,因为当您尝试使用此语句时:

QApplication prog(argc, argv);

找不到QApplication类的定义。

但你有另一个问题。您还包括&#34; mainwindow.h&#34;,而您实际上没有MainWindow实例。解决了这两个主要问题后,您的工作代码应该是这样的:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication prog(argc, argv);
    QLabel *l = new QLabel("Itay's First GUI in C++!!");
    l->show();
    return prog.exec();
}

请注意我使用了

#include <QApplication>

而不是

#include <QtGui/QApplication>

因为前者也适用于Qt 5。 QApplication类以及其他几个类被放入QtWidgets模块中。此外,这与QLabel包含更加一致。