使用QT程序可以访问web页面,但在不同QT版本中使用的类和方法不同:
1. Qt4中使用webkit模块;
2. Qt5 ~Qt5.5使用webkitwidgets模块;
3. Qt5.6以上版本使用webenginewidgets模块。
所以在不同版本中添加的模块,使用的类都不相同;
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
#include
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版本之后,将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
#include
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
#include
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;
}