我是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]
}
^
有人可以告诉我这个原因吗?
答案 0 :(得分:8)
您需要添加QApplication
标题:
#include <QApplication>
答案 1 :(得分:0)
错误消息&#34;有初始化程序但类型不完整&#34;表示该类是前向声明的,未定义。
如前所述,#include <QApplication>
解决了这个问题。
答案 2 :(得分:0)
我是Qt编程的新手,并且在本教程中遵循教程http://thenewboston.org/watch.php?cat=57&number=4,地球上有最复杂的程序,它就是这样的:
您没有提及要仔细收听视频。让我们看一下视频中的相关屏幕截图:
正如您所看到的,他们确实包括这一行:
#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
包含更加一致。