2013-06-27 2 views
1

Я только что начал изучать Qt и пытался скомпилировать и запустить простую программу Hello World. Программа строит без каких-либо проблем и дает этот вывод в compiler outputПростая программа Qt строит, но не показывает вывод

 
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(); 
} 

I я совершенно новичок в процедуре строительства Qt и не могу понять, что не так.

Update

попытался изменить 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.

+1

Что произойдет, если вы измените QCoreApplication на QApplication? – thuga

ответ

0

Вам необходимо создать окно, если вы хотите отобразить метку. В основном что-то вроде этого (не проверено):

QMainWindow* win = new QMainWindow(); 
QLabel *label = new QLabel(win, "Hello World!!!"); 
label->show(); 
win->show(); 
+2

Неправда. Вы можете отображать любой виджет в качестве окна верхнего уровня. – RobbieE

+1

Я уверен, что вы можете отображать QLabel без MainWindow.Ведь mainwindow - не что иное, как виджет. Кажется, что проблема заключается в использовании QCoreApplication вместо QApplication. – thuga

0

изменение QCoreApplication к QApplication надстройку главного окна

QApplication a(argc, argv); 
QMainWindow* mainWin = new QMainWindow(); 
QLabel *label = new QLabel(mainWin, "Hello World!!!"); 
mainWin->setCentralWidget(label); 
mainWin->show(); 
2

Если вы хотите QLabel для отображения, необходимо запустить класс приложения GUI QApplication, не QCoreApplication.

0

Вы должны установить в конфигурации проекта, что вы компилируете Qt GUI приложение. Использование QApplication вместо QCoreApplication недостаточно. Я не знаю вашу IDE, поэтому я не могу предоставить «howto», но я верю, что вы легко найдете необходимые варианты. Для eapmle в MSVC вы устанавливаете необходимый тип приложения (консоль или графический интерфейс) во время создания проекта.

Также - код выхода 255 показывает некоторую ошибку. Код выхода должен быть равен нулю, кроме случаев, когда вы вручную его изменяете.

+0

Где я могу найти документацию по ошибкам кода выхода? – VedVals

+0

http://qt-project.org/doc/qt-4.8/qcoreapplication.html#exec –

1

Вы должны указать Qt, что вы хотите построить проект с помощью графического интерфейса. Откройте спроецируем .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(); 
} 
0

Попробуйте unclick Shadow build в ваших свойствах Project/Build.

0

I имеющий ту же проблему. Пусть это будет перезапуск QT. Разумеется, это работает