程序用WebKit展示了一個網頁:
【新增 QtWetKitWidgets 模塊】
頭文件包含要加 QtWebKitWidgets 目錄 .
注意:
第一點:程序的頭文件改變了
#include <QtWebKit/QWebFrame> 替換爲: #include<QtWebKitWidgets/ QWebFrame >
#include <QtWebkit/QWebView> 替換爲: #include<QtWebKitWidgets/ QWebView >
.pro 文件中 Qt += webkitwidgets
第二點:
運行時會出現下面的這個問題:
解決辦法是:
下載OpenSSl,並安裝,並將安裝下的兩個庫libeay32.dll和ssleay32.dll移動到QT編譯器下bin文件夾中。
例子:
建立一個gui工程:
.pro文件中
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtWebKit/QtWebKit>
#include <QtWebKitWidgets/QWebView>
#include <QLineEdit>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected slots:
void changeLocation();//改變路徑
void setProgress(int p);//更新進度
void adjustTitle();//更新標題顯示
void finishLoading(bool);//加載完成後進行處理
private:
Ui::MainWindow *ui;
QWebView *view;
QLineEdit *locationEdit;
int progress;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QUrl>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
progress = 0;
view = new QWebView(this);
setCentralWidget(view);
resize(800,600);
connect(view,SIGNAL(loadProgress(int)),this,SLOT(setProgress(int)));
connect(view,SIGNAL(titleChanged(QString)),this,SLOT(adjustTitle()));
connect(view,SIGNAL(loadFinished(bool)),this,SLOT(finishLoading(bool)));
locationEdit = new QLineEdit(this);
connect(locationEdit,SIGNAL(returnPressed()),this,SLOT(changeLocation()));
//在工具欄添加按鈕
ui->mainToolBar->addAction(view->pageAction(QWebPage::Back));
ui->mainToolBar->addAction(view->pageAction(QWebPage::Forward));
ui->mainToolBar->addAction(view->pageAction(QWebPage::Reload));
ui->mainToolBar->addAction(view->pageAction(QWebPage::Stop));
ui->mainToolBar->addWidget(locationEdit);
//設置並加載網頁地址
locationEdit->setText("http://www.baidu.com");
view->load(QUrl("http://www.baidu.com"));
}
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!");
}
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
效果:
有什麼問題請聯繫我:839505138.