Qt Creator:Webkit實踐

程序用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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章