Seite 1 von 1
Qt und consolen anwendungen
Verfasst: 11. September 2007 20:59
von Treehouse
Hallo zusammen,
ich habe mal folgende frage. Ist es möglich solche Sachen wie QHttp, QXml usw. auch in Consolen anwendungen zu verwenden??
Ich würde nämlich gernen einen kleinen rss reader für eine Seite schreiben und da Qt so nette funktionen hat dachte ich man könnte diese vielleicht nutzen.
Oder ist dies immer nur möglich im zusammenhang mit einer Gui ?
Gruß
Treehouse
Verfasst: 11. September 2007 21:13
von Christian81
Warum sollte es nicht gehen?
Verfasst: 11. September 2007 21:22
von Treehouse
Ja weil ich gerade versuche eine html seite aus zu lesen und so wie ich das verstanden habe muss ich da doch dann mit Signal Slot arbeiten oder?? Damit man weiß wann das einlesen beendet ist.
Ich versuche gerade das kleine programm aus dem Tutorial auf die Konsole zu übertragen,
http://doc.trolltech.com/4.3/xml-rsslis ... g-cpp.html
aber so richtig will es nicht klappen...... wenn ich hier http.readall() mache kommen hier keine daten an.
Verfasst: 11. September 2007 21:24
von Treehouse
Hier mal mein kleiner Code ::
Code: Alles auswählen
#include <QHttp>
#include <QString>
#include <iostream>
#include <QUrl>
#include <QDebug>
#include <QByteArray>
using namespace std;
int main(int argc, char **argv){
QHttp http;
QByteArray arr;
QUrl url(argv[1]);
http.setHost(url.host());
http.get(url.path());
arr = http.readAll();
qDebug() << arr;
}
und ich dachte halt das man so die Seite schon mal auslesen könnte. Aber da habe ich wohl was flasch verstanden.
Verfasst: 11. September 2007 21:29
von upsala
Du läßt die Event-Routine nicht laufen, somit kann das auch nicht funktionieren...
Verfasst: 11. September 2007 21:34
von Treehouse
ach du meinst das um den normal code auch noch das..
QApplication app(argc, argv);
.
.
.
.
CODE
.
.
.
.
.
.
return app.exec();
Verfasst: 11. September 2007 21:35
von Christian81
Lies die Doku!
Stichwort: QCoreApplication
Verfasst: 11. September 2007 22:04
von Treehouse
So sollte es doch gehen oder................ nur leider tuts das nicht
woran kann das denn liegen.......... ?
Code: Alles auswählen
int main(int argc, char **argv){
QCoreApplication a(argc, argv);
QHttp http;
QByteArray arr;
QUrl url(argv[1]);
http.setHost(url.host());
http.get(url.path());
qDebug() << http.readAll();
return a.exec();
}
Verfasst: 11. September 2007 22:10
von upsala
woran kann das denn liegen.......... ?
Daß du die Doku nicht liest oder nicht verstehen willst.
Mach dir mal Gedanken, wann deine Event-Routine läuft und somit deine Events abgearbeitet werden könne.
Verfasst: 11. September 2007 22:13
von Treehouse
Sagen wirs mal so würde ich sie verstehen meinst du dann würde ich fragen ?
aber gut kann nicht jeder mit der Qt doku auf die Welt gekommen sein.
Verfasst: 11. September 2007 22:25
von Christian81
Euer Problem ist dass ihr einfach anfangt ohne euch Gedanken zu machen bzw. ohne zu wissen was ihr überhaupt macht.
Hättest Du dich etwas mit Qt beschäftigt und die Tutorials durchearbeitet hättest Du gesehen, dass dies nur mit Signals/Slots geht. Steht ja auch gut hier
int QHttp::get ( const QString & path, QIODevice * to = 0 )
Sends a get request for path to the server set by setHost() or as specified in the constructor.
path must be an absolute path like /index.html or an absolute URI like
http://www.trolltech.com/index.html.
If the IO device to is 0 the readyRead() signal is emitted every time new content data is available to read.
If the IO device to is not 0, the content data of the response is written directly to the device. Make sure that the to pointer is valid for the duration of the operation (it is safe to delete it when the requestFinished() signal is emitted).
The function does not block and returns immediately. The request is scheduled, and its execution is performed asynchronously. The function returns a unique identifier which is passed by requestStarted() and requestFinished().
When the request is started the requestStarted() signal is emitted. When it is finished the requestFinished() signal is emitted.
Wir haben uns das auch alles erarbeitet und sind nicht mit der Doku auf die Welt gekommen. Aber wir haben auch was dafür gegeben und mal nachgedacht und nachgelesen!