我刚刚开始学习Qt并尝试编译并运行一个简单的hello world程序。程序构建没有任何问题,并在compiler output
Starting: /qtbuild/bin/qmake /home/ved/Qt/train1/train1.pro -spec /qtbuild/mkspecs/qws/linux-arm-g++ -r CONFIG+=debug Exited with code 0. Starting: /usr/bin/make -w make: Entering directory `/home/ved/Qt/train1' make: Nothing to be done for `first'. make: Leaving directory `/home/ved/Qt/train1' Exited with code 0.
但是在尝试运行程序时,它只显示:
Starting /home/ved/Qt/train1/train1... /home/ved/Qt/train1/train1 exited with code 255
我的代码:
#include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QLabel *label = new QLabel("Hello World!!!"); label->show(); return a.exec(); }
我对Qt构建过程完全不熟悉,无法理解错误。
尝试将QCoreApplication
更改为QApplication
。没有变化。
Running build steps for project train1... Starting: /qtbuild//bin/qmake /home/ved/Qt/train1/train1.pro -spec /qtbuild/mkspecs/qws/linux-arm-g++ -r CONFIG+=debug Exited with code 0. Starting: /usr/bin/make -w make: Entering directory `/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 In file included from /qtbuild/include/QtCore/qobject.h:48, from /qtbuild/include/QtCore/qiodevice.h:46, from /qtbuild/include/QtCore/qxmlstream.h:45, from /qtbuild/include/QtCore/QtCore:3, from main.cpp:1: /qtbuild/include/QtCore/qstring.h:91: note: the mangling of 'va_list' has changed in 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: Leaving directory `/home/ved/Qt/train1' Exited with code 0.
我使用Qt 4.6.3。
答案 0 :(得分:2)
如果要显示QLabel,则需要运行GUI应用程序类QApplication
,而不是QCoreApplication
。
答案 1 :(得分:1)
你应该告诉Qt,你想用GUI构建项目。打开你的项目.pro文件并更改行
QT += ...
到
QT += core gui
示例,.pro文件:
QT += core gui
TARGET = untitled1
TEMPLATE = app
SOURCES += main.cpp
main.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();
}
答案 2 :(得分:0)
如果要显示标签,则需要创建一个窗口。基本上是这样的(未经测试):
QMainWindow* win = new QMainWindow();
QLabel *label = new QLabel(win, "Hello World!!!");
label->show();
win->show();
答案 3 :(得分:0)
将QCoreApplication
更改为QApplication
添加主窗口
QApplication a(argc, argv);
QMainWindow* mainWin = new QMainWindow();
QLabel *label = new QLabel(mainWin, "Hello World!!!");
mainWin->setCentralWidget(label);
mainWin->show();
答案 4 :(得分:0)
您必须在项目配置中设置您正在编译Qt GUI 应用程序。使用QApplication而不是QCoreApplication是不够的。我不知道你的IDE,所以我不能提供“howto” - 但我相信你会很容易找到必要的选项。对于eapmle,在MSVC中,您可以在创建项目期间设置必要的应用程序类型(控制台或GUI)。
此外 - 退出代码255显示某些错误。手动更改退出代码时,退出代码必须为零。
答案 5 :(得分:0)
尝试在Project / Build属性中取消单击Shadow build。
答案 6 :(得分:0)
我有同样的问题。让它重启QT。肯定有效吗