当前位置: 代码迷 >> 综合 >> QT QWebView/QWebEngineView使用
  详细解决方案

QT QWebView/QWebEngineView使用

热度:23   发布时间:2024-01-16 04:35:32.0

一、 简介

       使用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 += widgetsTARGET = web
TEMPLATE = appSOURCES += main.cpp\widget.cppHEADERS  += widget.hFORMS    += 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_OBJECTpublic: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 webenginewidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = web
TEMPLATE = appSOURCES += \main.cpp \widget.cppHEADERS += \widget.hFORMS += \widget.uiRESOURCES +=

     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_OBJECTpublic: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;
}