[gelöst] schnelle Ausgabe

Alles rund um die Programmierung mit Qt
Antworten
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

[gelöst] schnelle Ausgabe

Beitrag von KarlBlau »

Ich bin neu in der QT-Programmierung. Ich habe bisher Konsolenprogramme geschrieben.
Da konnte ich überall im Code einfach mit

Code: Alles auswählen

std::cout << "variable: " << variable << std::endl;
eine schnelle Ausgabe machen. Sowas suche ich bei der Programmierung mit QT.
Ich habe mal zum Test einen cout im Code untergebracht. Scheinbar funktioniert dieser aber nicht, wenn man mit QT arbeitet.

Gruss, Karl
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Das eine ist STL, das andere Qt. Du kannst beides in deinem Programm verwenden. Qt bietet sogar STL Support.

Lösung 1:
STL genauso in Qt verwenden, wie du das mit nicht Qt machen würdest:
#include <iostream>
std::cout << "Hallo Welt" << std::endl;

Lösung 2:
Nimm qDebug() ist ziemlich gleich der Funktion printf in c.
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von KarlBlau »

Hi,
Danke für die Antwort. Was bedeutet 'STL'? Etwa 'Standard-Lib'? cout hatte ich vorher schon probiert. Das wäre mir nämlich am liebsten, denn mit dem arbeite ich bisher. Ich habe hier mein Test-Code gepostet. Mache ich was falsch? Es wird nichts gedruckt! Der Code wird compiliert und wenn ich die .exe starte, kommt ein Fenster mit Label 'Hello'. Aber nirgends steht was von 'Servus'. Hmm...

Code: Alles auswählen

#include <qapplication.h>
#include <qlabel.h>
#include <iostream>

int main(int argc, char **argv)
{
	QApplication app(argc, argv, "NICHTS");
	QLabel lab("Hello", 0);

	std::cout << "Servus - Cout" << std::endl;
	qDebug("Servus - qDebug");

	lab.show();
	app.setMainWidget(&lab);
	return app.exec();
}
Hat jemand eine Idee?

Gruss, Karl
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Eine app.exec() instance wird unter Windows von der Shell detached.

Auf Deutsch:

Bein aufruf von app.exec() löst sich deine Anwendung von der MS Dos Eingabeaufforderung.

STL = Standard Template Library.

Wenn du die Anwendung debuggst, z.B. mit Visual Debugger, dann gibt er dir deine Texte mit aus.
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von KarlBlau »

D.h. also Eingabeaufforderung iss nich. Alles klar. Aber kann ich den Out-Stream nicht irgendwie auf ein QLabel umleiten? Mir geht es ja nur darum, mal kurz was auszugenen. Standardmäßig können QLabels nur (q)Strings, ich müsste z.B. auch viele Zahlen, oder eigene Klassen ausgeben. Also irgendwas mit dem Outstream wäre mir am liebsten.
Gruss, Karl
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

QString( "%1%2%3%4%5" ).arg( "String" ).arg( 123 ).arg( double ) usw usw.

<< ersetzt Q*Stream. Mh, allerdings guck dir doch mal die Dokumentation an, dort steht, was du genau alles machen kannst. Denn das sind ja schließlich keine Probleme.
Antworten