Seite 1 von 1

Konsole-Programmierung

Verfasst: 25. Dezember 2009 21:49
von anno1988
Hallo,

ich habe mal eine generelle Frage zu einem Konsolenproggramm. Ich programmiere das Programm unter Linux.

Code: Alles auswählen


#include <QtCore/QCoreApplication>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

	QCoreApplication a(argc, argv);

	cout << "hallo";

	return a.exec();

}
Was ich nicht ganz verstehe ist, warum das Programm nicht wieder beendet wird, wenn es durchlaufen wurde.

Es bleibt nach der Textausgabe einfach stehen und dann wird ncihts mehr gemacht.

Was mache ich denn da falsch?

Verfasst: 25. Dezember 2009 22:11
von franzf
Du machst gar nichts falsch ;)
Das "a.exec()" startet die Eventloop. Das Programm wartet jetzt auf Events.
Da keine ankommen, steht das Programm einfach still, es hängt fest in der Eventloop.

Wenn du nur Text ausgibst und vllt. mal eine Eingabe tätigst und diese gleich verarbeitest, die ganze app durch aber keine Events anfallen (z.B. weil einfach nirgends im Code ein SIGNAL emittiert wird), brauchst du keine eventloop und eigentlich auch kein QCoreApplication-Objekt.

Verfasst: 5. Januar 2010 16:53
von QAnton
CONFIG += console

Code: Alles auswählen

#include <QTextStream>
#include <QString>

int main(int argc, char *argv[])
{
      QTextStream qout(stdout);
      QTextStream qin(stdin);
      qout<<"Input:"<<"\n";
      qout.flush();
      QString myString=qin.readLine();      
      qout<<myString<<"\n";

}
Debug mode (sehr empfehlenswert für GUI Apps)

CONFIG += testlib

Code: Alles auswählen

#include <QDebug>
qDebug()<<"debug message";