Прості програми Qt будуються, але не показують вихід

I have just started learning Qt and tried to compile and run a simple program of hello world. The program builds without any issues and gives this output in 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.

1
Що станеться, якщо змінити QCoreApplication на QApplication?
додано Автор thuga, джерело

7 Відповіді

Якщо потрібно, щоб QLabel відображався, потрібно запустити клас додатків GUI QApplication , а не QCoreApplication .

2
додано

Ви повинні повідомити Qt, що ви хочете побудувати проект з графічним інтерфейсом. Відкрийте свій проект .pro файл і змініть рядок

QT += ...

до

QT += core gui

наприклад, файл .pro:

QT       += core gui

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

main.cpp:

#include 
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel lbl("hello world");
    lbl.show();
    return a.exec();
}
1
додано

Вам потрібно створити вікно, якщо ви хочете відобразити мітку. В основному щось подібне (не перевірено):

QMainWindow* win = new QMainWindow();
QLabel *label = new QLabel(win, "Hello World!!!");
label->show();
win->show();
0
додано
Я впевнений, що ви можете показати QLabel без MainWindow. Адже головне вікно - це не що інше, як віджет. Здається, проблема полягає в тому, що він використовує QCoreApplication замість QApplication.
додано Автор thuga, джерело
Неправда. Ви можете мати будь-який віджет, який відображатиметься у вікні верхнього рівня.
додано Автор RobbieE, джерело

Ви повинні встановити в конфігурації проекту, що ви компілюєте програму Qt GUI . Використання QApplication замість QCoreApplication недостатньо. Я не знаю вашого IDE, так що я не можу дати "howto" - але я вірю, що ви easly знайти необхідні варіанти. Для eapmle, у MSVC, ви встановлюєте необхідний тип програми (консоль або GUI) під час створення проекту.

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

0
додано
додано Автор Dmitry Sazonov, джерело
Де я можу знайти документацію про помилки коду виходу?
додано Автор VedVals, джерело

У мене така ж проблема. Дозвольте йому перезапустити QT. Звичайно, це працює

0
додано

змінити QCoreApplication на QApplication додати головне вікно

QApplication a(argc, argv);
QMainWindow* mainWin = new QMainWindow();
QLabel *label = new QLabel(mainWin, "Hello World!!!");
mainWin->setCentralWidget(label);
mainWin->show();
0
додано

Спробуйте вимкнути побудову тіней у властивостях Project/Build.

0
додано