QT QWebView/QWebEngineView使用

一、 简介

       使用QT程序可以访问web页面,但在不同QT版本中使用的类和方法不同:

               1. Qt4中使用webkit模块;

               2. Qt5 ~Qt5.5使用webkitwidgets模块;

               3. Qt5.6以上版本使用webenginewidgets模块。

       所以在不同版本中添加的模块,使用的类都不相同;

二、 Qt4版本

       Qt4使用webkit模块。

       1. 创建一个Widget类的QT工程,在pro工程文件中添加 webkit network :

QT       += core gui webkit network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = web
TEMPLATE = app
 
 
SOURCES += main.cpp\
           widget.cpp
 
HEADERS  += widget.h
 
FORMS    += widget.ui

        2. 编辑widget.h文件,在Widget类中添加一个指针成员,该指针指向一个QWebView类:

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QtWebKit/QWebView>
 
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
 
    QWebView    *view;
 
 
private:
    Ui::Widget *ui;
};
 
#endif // WIDGET_H

     3. 修改widget.cpp,实现下面两个成员函数

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
    Widget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    view = new QWebView(this);
    view->load(QUrl("http://www.baidu.com"));
    view.showMaximized();
}
 
Widget::~Widget()
{
    delete view;
    delete ui;
}

三、 Qt5 ~ Qt5.5版本

     Qt5版本之后,将QWebView、QWebFrame、QWebPage、QWebInspector等类被单独移到了webkitwidgets模块,不再在QtWebKit模块中,因此需使用webkitwidgets模块。

     和Qt4的区别仅在于pro文件中添加的模块不同和widget.h文件中包含的头文件不同。

QT       += core gui webkitwidgets network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QtWebKitWidgets/QWebView>

四、 Qt5.6及以上版本

     Qt5.5.1是最后一个支持webkitwidgets的版本,在5.6版本以及之后的版本,Qt将webkitwidgets模块移除,并用一个新的模块webenginewidgets代替。
     1. 创建一个Widget类的QT工程,在pro工程文件中添加 webenginewidgets:


QT       += core gui webenginewidgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = web
TEMPLATE = app


SOURCES += \
        main.cpp \
        widget.cpp

HEADERS += \
        widget.h

FORMS += \
        widget.ui

RESOURCES +=

     2. 编辑widget.h文件,包含QWebEngineView头文件,并在Widget类中添加一个指针成员,该指针指向一个QWebEngineView类:

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QWebEngineView>
 
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
 
    QWebEngineView    *view;
 
 
private:
    Ui::Widget *ui;
};
 
#endif // WIDGET_H

    3. 修改widget.cpp,实现下面两个成员函数

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
    Widget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    view = new QWebEngineView(this);
    view->load(QUrl(QStringLiteral("http://www.baidu.com")));
    view.showMaximized();
}
 
Widget::~Widget()
{
    delete view;
    delete ui;
}

猜你喜欢

转载自blog.csdn.net/sean_8180/article/details/81634425