Qt Creater关于Qt WebEngine模块的介绍

从Qt5.5开始,Qt WebKit模块被废弃,被Qt WebEngine模块取代

如果是windows,需要MSVC版本的QTVS 2013

.pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2016-07-15T14:01:58
#
#-------------------------------------------------

QT       += core gui
QT += webenginewidgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = mywebengine
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui
main.cpp文件:
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

MainWindow.cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QWebEngineView>
#include <QLineEdit>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    view = new QWebEngineView(this);
    view->load(QUrl("http://localhost/wangye/index.php"));
    setCentralWidget(view);
    resize(1024, 680);

    progress = 0;

    // 关联信号和槽
    connect(view, &QWebEngineView::loadProgress, this, &MainWindow::setProgress);
    connect(view, &QWebEngineView::titleChanged, this, &MainWindow::adjustTitle);
    connect(view, &QWebEngineView::loadFinished, this, &MainWindow::finishLoading);

    locationEdit = new QLineEdit(this);
    locationEdit->setText("http://localhost/wangye/index.php");
    connect(locationEdit, &QLineEdit::returnPressed, this, &MainWindow::changeLocation);

    // 向工具栏添加动作和部件
    ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Back));
    ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Forward));
    ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Reload));
    ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Stop));
    ui->mainToolBar->addWidget(locationEdit);
}

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

// 地址栏按下回车处理槽
void MainWindow::changeLocation()
{
    QUrl url = QUrl(locationEdit->text());
    view->load(url);
    view->setFocus();
}

void MainWindow::setProgress(int p)
{
    progress = p;
    adjustTitle();
}

// 调整标题槽
void MainWindow::adjustTitle()
{
    if ( progress <= 0 || progress >= 100) {
        setWindowTitle(view->title());
    } else {
        setWindowTitle(QString("%1 (%2%)").arg(view->title()).arg(progress));
    }
}

// 加载完成处理槽
void MainWindow::finishLoading(bool finished)
{
    if (finished) {
        progress = 100;
        setWindowTitle(view->title());
    } else {
        setWindowTitle("web page loading error!");
    }
}

view = new QWebEngineView(this);

view->load(QUrl("http://localhost/wangye/index.php"));

setCentralWidget(view);

resize(1024, 680);

这段代码是新建一个QWebEngineView类对象,并把url赋值,也就是相当于在浏览器的域名中输入了网页url

    ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Back));   ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Forward));ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Reload));

ui->mainToolBar->addAction(view->pageAction(QWebEnginePage::Stop));

ui->mainToolBar->addWidget(locationEdit);

这段代码是通过QWebEngineView类写好的方法来记录网页的history,实现网页的Back,Forward,Reload和Stop,并且绑定信号与槽实现在浏览器的url输入栏中输入地址会读取urltext,实现新页面的跳转

其实就是别人写好的东西来拿用,被人写后了web engine这个类,给你个接口,你会用就行


猜你喜欢

转载自blog.csdn.net/greedy__/article/details/80786905
QT