Qt创建QLabel时为什么会出现错误?

3
我正在使用Qt creator 2.0.1,当输入以下行时: #include <QLabel> 我收到以下错误消息: QLabel: 没有那个文件或目录 为什么会这样?我该如何在这种情况下包含标签?
更新
@maverik向我展示了如何解决QLabel错误,但现在我遇到了以下错误:
该程序是:(图片略)
#include <QtCore/QCoreApplication>
#include <QtGui/QLabel>

int main(int argc, char *argv[]) {
QCoreApplication myapp(argc, argv);
QLabel *label = new QLabel("Hello");
label->show();
return myapp.exec(); 
}

有什么想法吗?

谢谢。

5个回答

5

使用

QApplication

而不是

QCoreApplication

从QCoreApplication文档中可以看出:

QCoreApplication类为控制台Qt应用程序提供事件循环。此类由非GUI应用程序用于提供其事件循环。对于使用Qt的非GUI应用程序,应该有一个QCoreApplication对象。对于GUI应用程序,请参阅QApplication。

然后包含相关的头文件,它将编译得很好。QCoreApplication适用于非GUI应用程序(控制台)。


1
是的,也许原帖作者使用了Qt Creator生成默认控制台应用程序,并在其中添加了QLabel(这就是为什么项目文件会有QT -= gui定义的原因)。在这种情况下,他应该使用“Qt Gui应用程序”选项从创建者中生成默认GUI应用程序。 - deo
谢谢您的回复。当我这样做时,我会得到“QApplication:没有这样的文件或目录”。 - Simplicity

3

请检查您的Qt项目文件是否包含以下内容:

QT += gui
CONFIG += qt

并且不包含

QT -= gui

我认为这导致了链接问题。同时我认为

#include <QLabel>

如果项目文件正确,那么这应该就足够了。

这可能是对Maverik的首选答案。 - San Jacinto
谢谢您的回复。当我这样做时,我会得到一个控制台窗口,其中提到:QWidget: Cannot create a QWidget when no GUI is being used,第二行是This application has requested the Runtime to terminate.....,因此.exe文件停止工作。有什么想法吗? - Simplicity

1

试试这个:

#include <QtGui/QLabel>

谢谢您的回复。是的,我认为这解决了QLabel的问题。但是,我遇到了新的错误。请查看我更新的帖子,其中包含错误和我正在尝试运行的代码。 - Simplicity
你是用什么方式构建项目的?你使用makefile还是qmake?问题似乎出在链接上。你应该链接Qt库,如qtgui和qtcore。最好的方法是使用qmake。 - maverik

0

我想我找到了问题所在。

因为我正在使用 Qt Creator,当创建一个新项目时,我选择的是 Qt Console Application 而不是 Qt Gui Application


这就是@deo所说的,所以你应该真的接受那个答案(@soulSurfer2010解释了创建“QWidget”后续问题)。 - Troubadour

0

QLabel类 QLabel小部件提供文本或图像显示。更多资料...

头文件:#include qmake: QT += widgets 继承:QFrame 包括继承成员在内的所有成员列表 已过时的成员

***只需将 QT += widgets 添加到.pro文件中即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接