从Qt5.5开始,Qt WebKit模块被废弃,被Qt WebEngine模块取代
如果是windows,需要MSVC版本的QT,VS 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输入栏中输入地址会读取url的text,实现新页面的跳转
其实就是别人写好的东西来拿用,被人写后了web engine这个类,给你个接口,你会用就行