Qt development - simple web browser

table of Contents

Network applications Troika:

Renderings:

QNetwork initiating a network request to read text +

mainwindow.cpp

mainwindow.h


Network applications Troika:

  • QNetworkAcessManager: coordination of network operation
  • QNetwork: network requests
  • QNetworkReply: Network request response

Renderings:

QNetwork initiating a network request to read text +

Can only display text, pictures can not be displayed

 

mainwindow.cpp

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowIcon(QIcon("icon.png"));
    setWindowTitle(QStringLiteral("简易网络浏览器"));
    manager = new QNetworkAccessManager(this);//发送网络请求和接受应答
    //当网络应答结束响应信号
    connect(manager,SIGNAL(finished(QNetworkReply*)),this,
            SLOT(replyFinished(QNetworkReply*)));
//    manager->get(QNetworkRequest(QUrl("https://blog.csdn.net/qq_41895747/category_9122323.html")));
    //发送网络请求
    manager->get(QNetworkRequest(QUrl("http://www.baidu.com")));
}

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

//应答信号,显示网络文字,无法显示动态脚本等其他网络特效与图片
void MainWindow::replyFinished(QNetworkReply *reply){

    QString all = reply->readAll();
    ui->textBrowser->setText(all);
    //读取完成后删除对象
    reply->deleteLater();

}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtNetwork>

namespace Ui {
class MainWindow;

class QNetworkReply;
class QNetworkAccessManager;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager *manager;

private slots:
    void replyFinished(QNetworkReply*);

};


#endif // MAINWINDOW_H

 

Published 246 original articles · won praise 253 · views 110 000 +

Guess you like

Origin blog.csdn.net/qq_41895747/article/details/104093472
Recommended