2011-01-03 9 views
0

Ich verbrachte den ganzen Tag damit, einen Qt-Code zu finden, um einen Quellcode von einer Website (z. B. www.google.com) zu bekommen, aber alles, was ich gefunden habe, hat es nicht funktioniert. Also, kann bitte jemand den Code posten, wie man den Quellcode von der Website bekommt? (Ich benutze Qt Creator und ich weiß nichts über Slot-Verbindung, also schreiben Sie bitte den Code ohne den Steckplatz (oder was auch immer), wenn es überhaupt möglich ist.Wie bekomme ich den gesamten HTML-Quellcode von einer Webseite in Qt?

EDIT: Hier ist der Code:

project.pro

#------------------------------------------------- 
# 
# Project created by QtCreator 2011-01-02T21:40:52 
# 
#------------------------------------------------- 

QT  += core gui 
QT  += webkit network 

TARGET = facebook 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

main.cpp

#include <QtGui/QApplication> 
#include "mainwindow.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

mainwindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    ui->buttonBack->setText("");           /*******************************/ 
    ui->buttonForward->setText("");          /*  Clear text from  */ 
    ui->buttonReload->setText("");           /*   the buttons   */ 
    ui->buttonStop->setText("");           /*******************************/ 
    ui->buttonBack->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowBack));   /*******************************/ 
    ui->buttonForward->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowForward));  /*   Set an icons  */ 
    ui->buttonReload->setIcon(QApplication::style()->standardIcon(QStyle::SP_BrowserReload));  /*  on the buttons  */ 
    ui->buttonStop->setIcon(QApplication::style()->standardIcon(QStyle::SP_BrowserStop));   /*******************************/ 
    //QString htmlOfPage; 
    /******** T E S T ********/ 

    //ui->browser->setHtml("<html><body>Test</body></html>"); 

    /******** T E S T ********/ 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::on_buttonBack_clicked() 
{ 
    ui->browser->back(); 
} 

void MainWindow::on_buttonForward_clicked() 
{ 
    ui->browser->forward(); 
} 

void MainWindow::on_buttonReload_clicked() 
{ 
    ui->browser->reload(); 
} 

void MainWindow::on_buttonStop_clicked() 
{ 
    ui->browser->stop(); 
} 

void MainWindow::on_browser_loadFinished(bool) 
{ 
    //QWebView webview; 
    //webview.setUrl (QUrl("http://www.google.com")); 
    //QString s = webview.page()->mainFrame()->toHtml(); 
    //htmlOfPage = ui->browser.page()->mainFrame()->toHtml(); 
} 

Ich habe eine Datei mainwindow.h und mainwindow.ui auch, aber ich denke, dass niemand diese Dateien benötigt, also habe ich sie nicht veröffentlicht.

Antwort

2
#include <QApplication> 
#include <QDebug> 
#include <QtNetwork/QNetworkAccessManager> 
#include <QtNetwork/QNetworkRequest> 
#include <QtNetwork/QNetworkReply> 
#include <QIODevice> 
#include <QUrl> 


class MyClass : public QObject{ 

    Q_OBJECT 

public slots: 
    void onFinished() { 
     QIODevice * content = static_cast<QIODevice*>(QObject::sender()); 
     qDebug() << content->readAll(); 
     content->deleteLater(); 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QNetworkAccessManager nam; 
    MyClass obj; 

    QNetworkReply * reply = nam.get(QNetworkRequest(QUrl("http://google.com"))); 
    QObject::connect(reply, SIGNAL(finished()), &obj, SLOT(onFinished())); 

    app.exec(); 
} 

#include "main.moc" 
+1

Funktioniert nicht, es sei denn, er fügt 'QT + = network' zur Projekt-Profildatei hinzu. – ismail

+0

Wohin mit diesem Code? .. Ich habe meinen Code zu der Frage hinzugefügt, damit Sie mir einfach sagen können, wo ich den Code einfügen soll. :) – kv1dr

Verwandte Themen