Qt文档阅读笔记-QWebPage官方解析与实例

583 篇文章 127 订阅

目录

 

官方解析

博主例子

源码下载地址


官方解析

QWebPage提供一个视图对象和一个web页面;
QWebPage提供了web页面的内容,各种设置(是否支持JavaScript等)和连接,它与QWebFrame一起使用就和QWebView一样了。
QWebPage与QWebView十分的相似;


在无界面的环境中使用QWebPage
通过QwebPage中的setViewportSize()设置视口。然后调用显示函数QWebFrame::render().
如下的Thumbnail类:

class Thumbnailer : public QObject
{
    Q_OBJECT

public:
    Thumbnailer(const QUrl &url);

Q_SIGNALS:
    void finished();

private Q_SLOTS:
    void render();

private:
    QWebPage page;

};

Thumbnail的构造函数:

Thumbnailer::Thumbnailer(const QUrl &url)
{
    page.mainFrame()->load(url);
    connect(&page, SIGNAL(loadFinished(bool)),
        this, SLOT(render()));
}

render()函数的作用是使用QWebPage对象画一个缩略图:

void Thumbnailer::render()
{
    page.setViewportSize(page.mainFrame()->contentsSize());
    QImage image(page.viewportSize(), QImage::Format_ARGB32);
    QPainter painter(&image);

    page.mainFrame()->render(&painter);
    painter.end();

    QImage thumbnail = image.scaled(400, 400);
    thumbnail.save("thumbnail.png");

    emit finished();
}

首先设置viewportSize的大小,然后实例化一个QImage对象。这个Image的大小和viewportSize的大小一样。把image作为参数传给painter;将主框架及其子框架的内容呈现到painter中。最后,保存缩放后的图像。


 

博主例子

这里把官方的例子跑起来:

程序运行截图如下:

Qt Creator运行截图如下:

程序结构如下:

源码如下:

QWebPage.pro

QT       += core gui webkitwidgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = QWebPage
TEMPLATE = app


SOURCES += main.cpp\
        thumbnailer.cpp

HEADERS  += thumbnailer.h

thumbnailer.h

#ifndef THUMBNAILER_H
#define THUMBNAILER_H

#include <QObject>
#include <QWebPage>
#include <QUrl>

class Thumbnailer : public QObject
{
    Q_OBJECT

public:
    Thumbnailer(const QUrl &url);
    ~Thumbnailer();

Q_SIGNALS:
    void finished();

private Q_SLOTS:
    void render();

private:
    QWebPage page;
};

#endif // THUMBNAILER_H

main.cpp

#include "thumbnailer.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Thumbnailer w(QUrl("http://www.baidu.com"));
    Q_UNUSED(w)
    return a.exec();
}

thumbnailer.cpp

#include "thumbnailer.h"
#include <QWebFrame>
#include <QImage>
#include <QPainter>

Thumbnailer::Thumbnailer(const QUrl &url)
{
    page.mainFrame()->load(url);
    connect(&page, SIGNAL(loadFinished(bool)), this, SLOT(render()));
}

Thumbnailer::~Thumbnailer()
{

}

void Thumbnailer::render()
{
    page.setViewportSize(page.mainFrame()->contentsSize());
    QImage image(page.viewportSize(), QImage::Format_ARGB32);
    QPainter painter(&image);

    page.mainFrame()->render(&painter);
    painter.end();

    QImage thumbnail = image.scaled(400, 400);
    thumbnail.save("thumbnail.png");
    image.save("original.png");
    emit finished();
}

 

源码下载地址

https://github.com/fengfanchen/Qt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值