1

刚开始学习Qt,尝试编译运行一个简单的hello world程序。该程序构建没有任何问题,并在compiler output

开始:/qtbuild/bin/qmake /home/ved/Qt/train1/train1.pro -spec /qtbuild/mkspecs/qws/linux-arm-g++ -r CONFIG+=debug
以代码 0 退出。
开始:/usr/bin/make -w
make: 进入目录`/home/ved/Qt/train1'
make: `first' 什么都不做。
make: 离开目录`/home/ved/Qt/train1'
以代码 0 退出。

但是在尝试运行程序时,它只显示:

开始 /home/ved/Qt/train1/train1...
/home/ved/Qt/train1/train1 以代码 255 退出

我的代码:

#包括
#包括
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QLabel *label = new QLabel("Hello World!!!");
    标签->显示();
    返回 a.exec();
}

我对 Qt 构建过程完全陌生,无法理解出了什么问题。

更新

尝试更改QCoreApplicationQApplication. 没变。

为项目 train1 运行构建步骤...
开始:/qtbuild//bin/qmake /home/ved/Qt/train1/train1.pro -spec /qtbuild/mkspecs/qws/linux-arm-g++ -r CONFIG+=debug
以代码 0 退出。
开始:/usr/bin/make -w
make: 进入目录`/home/ved/Qt/train1'
arm-linux-g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/qtbuild/mkspecs/qws/linux-arm-g++ -I。-I/qtbuild/include/QtCore -I/qtbuild/include/QtNetwork -I/qtbuild/include/QtGui -I/qtbuild/include -I. -I/usr/local/tslib-arm/include -o main.o main.cpp
在 /qtbuild/include/QtCore/qobject.h:48 包含的文件中,
来自/qtbuild/include/QtCore/qiodevice.h:46,
来自/qtbuild/include/QtCore/qxmlstream.h:45,
来自/qtbuild/include/QtCore/QtCore:3,
来自 main.cpp:1:
/qtbuild/include/QtCore/qstring.h:91:注意:'va_list' 的修改在 GCC 4.4 中发生了变化
arm-linux-g++ -Wl,-rpath,/qtbuild/lib -o train1 main.o -L/usr/local/tslib-arm/lib -L/qtbuild//lib -lQtGui -L/qtbuild//lib - l/usr/local/tslib-arm/lib -lQtNetwork -lQtCore -lpthread
make: 离开目录`/home/ved/Qt/train1'
以代码 0 退出。

我使用 Qt 4.6.3。

4

7 回答 7

2

如果要显示 QLabel,则需要运行 GUI 应用程序类QApplication,而不是QCoreApplication.

于 2013-06-27T10:03:28.193 回答
1

你应该告诉 Qt,你想用 GUI 构建项目。打开您的项目 .pro 文件并更改行

QT += ...

QT += core gui

例如,.pro 文件:

QT       += core gui

TARGET = untitled1
TEMPLATE = app
SOURCES += main.cpp

主.cpp:

#include <QtGui/QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel lbl("hello world");
    lbl.show();
    return a.exec();
}
于 2013-06-27T12:03:04.900 回答
0

您必须在项目配置中设置您正在编译 Qt GUI应用程序。使用 QApplication 代替 QCoreApplication 是不够的。我不知道你的 IDE,所以我不能提供“howto”——但我相信你会很容易找到必要的选项。对于 eapmle,在 MSVC 中,您可以在创建项目期间设置必要的应用程序类型(控制台或 GUI)。

另外 - 退出代码 255 显示一些错误。当您手动更改退出代码时,退出代码必须为零,但情况除外。

于 2013-06-27T10:56:42.143 回答
0

如果要显示标签,则需要创建一个窗口。基本上是这样的(未经测试):

QMainWindow* win = new QMainWindow();
QLabel *label = new QLabel(win, "Hello World!!!");
label->show();
win->show();
于 2013-06-27T09:55:35.550 回答
0

更改QCoreApplicationQApplication添加主窗口

QApplication a(argc, argv);
QMainWindow* mainWin = new QMainWindow();
QLabel *label = new QLabel(mainWin, "Hello World!!!");
mainWin->setCentralWidget(label);
mainWin->show();
于 2013-06-27T09:59:40.033 回答
0

尝试取消单击 Project/Build 属性中的 Shadow build。

于 2014-03-04T09:58:51.643 回答
0

我有同样的问题。让它重新启动QT。肯定行得通

于 2018-01-03T13:27:46.913 回答