[solved] Einfache Ausgaben auf der Console!?

Verschiedenes zu Qt
Antworten
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

[solved] Einfache Ausgaben auf der Console!?

Beitrag von odenter »

Also ich habe das SDK "Qt SDK 2009.05" installiert, unter Windows. Ich benutze den Qt-Creator um ein QT4 Consolen-Projekt zu erzeugen.

Aber ich bekomme ums verrecken nicht "Hallo, Welt" auf die Console geschrieben.
Meine *.pro Datei scheint auch korrekt zu sein.

Code: Alles auswählen

#-------------------------------------------------
#
# Project created by QtCreator 2009-12-10T16:42:22
#
#-------------------------------------------------

QT       -= gui

TARGET = qtConsoleNeu
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp
Kann mir jemand sagen wie ich Text auf der Console mit Qt unter Windows ausgeben kann?

Ich finde auch nichts brauchbares in der Hilfe, möglicherweise die falschen Suchbegriffe.

Aber ein

Code: Alles auswählen

std::cout << "lala" << std:.endl;
macht mal einfach so gar nüx..
Zuletzt geändert von odenter am 15. Januar 2010 14:55, insgesamt 1-mal geändert.
Hulk2442
Beiträge: 115
Registriert: 10. Januar 2007 13:44

Beitrag von Hulk2442 »

Startes du das Programm vom creator aus dann musst du den Debugger verwenden.

Startest du es über die Konsole das verwende folgendes

Code: Alles auswählen

#include <iostream>
// sowie
cout << qPrintable("Hallo Welt") << endl;
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

Also im Debugger gehts, wenn ich dann unter Ausgabe gucke.
Allerdings gibts nen error, wenn ich folgendes übersetzen will.

Code: Alles auswählen

#include <iostream>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    std::cout << "hallo, welt!" << std::endl;
    std::cout << qPrintable("Hallo Welt") << std::endl;
    return a.exec();
}
und zwar

Code: Alles auswählen

C:/_daten/temp/_coding/qt/console/main.cpp:33: error: request for member 'toLocal8Bit' in '("Hallo Welt")', which is of non-class type 'const char [11]'
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

odenter hat geschrieben:Also im Debugger gehts, wenn ich dann unter Ausgabe gucke.
Allerdings gibts nen error, wenn ich folgendes übersetzen will.
Dann schau mal in der Doku nach qPrintable und du wirst feststellen, dass der Code Quatsch ist ;)
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

Also die Doku sagt das es ein const char* zurück gibt.
Starte ich mein Programm an der Console gibt es trotzdem keine Ausgabe... Hab sogar nen eigenen MsgHandler installiert um zu gucken was passiert und da mit "printf" versucht den Text auszugeben, geht nicht.

Selbst mit nem QTextStream s(stdout) kommt nichts an der Console an.

Kann man überhaupt Textausgaben an der Console machen, die man sieht wenn man das Binary startet?

EDIT:
Starte ich das Programm aus der IDE heraus als "ausführen", dann geht ein Consolen Fenster auf und meine Ausgaben werden ausgegeben. :?
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

wahrscheinlich weil er keine verbindung zu der console hat ...
mit welchen subsystem erstellst du denn die exe ???

Ciao ...
drizzt
Beiträge: 29
Registriert: 9. Oktober 2009 13:37

Beitrag von drizzt »

pro-Datei:

CONFIG += console

und:

qDebug() << "Hallo Welt!";


reicht auch :)
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

CONFIG += console
ja, reichen sollte es eigentlich :-)

und eigentlich sollte sein Prog auch was auf der console rausbringen ...
Kann man überhaupt Textausgaben an der Console machen, die man sieht wenn man das Binary startet?
iss eigentlich sinn einer consolenanwendung ^^, mehr oder weniger.
std::cout << "lala" << std::endl;
sollte dir bei anbindung an die console definitiv was rausbringen.

wie startest du dein Program ? aus der ide ?
oder aus ner console raus ?

Ciao ....
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

RHBaum hat geschrieben:
CONFIG += console
ja, reichen sollte es eigentlich :-)

und eigentlich sollte sein Prog auch was auf der console rausbringen ...
Kann man überhaupt Textausgaben an der Console machen, die man sieht wenn man das Binary startet?
iss eigentlich sinn einer consolenanwendung ^^, mehr oder weniger.
std::cout << "lala" << std::endl;
sollte dir bei anbindung an die console definitiv was rausbringen.

wie startest du dein Program ? aus der ide ?
oder aus ner console raus ?

Ciao ....
- Aus der IDE --> geht
- Von der Console --> keine Ausgabe
drizzt
Beiträge: 29
Registriert: 9. Oktober 2009 13:37

Beitrag von drizzt »

was passiert denn, wenn du aus der console startest?
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

drizzt hat geschrieben:was passiert denn, wenn du aus der console startest?
Das Programm wird gestartet (sehe ich im Taskmanager) und beendet sich wieder. Danach kann ich an der Console z.B. nochmal starten oder sonst was machen.
Sehr seltsam irgendwie.
drizzt
Beiträge: 29
Registriert: 9. Oktober 2009 13:37

Beitrag von drizzt »

ohne irgendeine fehlermeldung?
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

drizzt hat geschrieben:ohne irgendeine fehlermeldung?
Ja
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

So ich hatte mal wieder etwas Langeweile und hab nochmal nahc dem Problem geguckt. Fiese Nummer.

Wenn ich unter meinem Windows 7 die Konsole als Administrator starte, und dann mein, als Benutzer erzeugtes Binary starte, dann kommt auch eine Fehlermeldung. *tada*

Starte ich hingegen das vom Benutzer erzeugte Binary als Benutzer, passiert mal gar nichts. (Bisher von mir geschildertes Verhalten)

Die Fehlermeldung die kam, war letztlich auch zu erwarten. Es wurden die *.dlls (QtCore4.dll etc.) nicht gefunden.

Kopiere ich nun die *.dlls aus dem Ordner "..\qt\bin\" zur *.exe geht es immer noch nicht!
Es geht erst, wenn ich die *.dlls aus dem Ordner "..\qt\qt\bin\" nehme.

Also Problem gelöst, Wochenende kann kommen. :)
Antworten