Qt4通過QWebView調用網頁界面

QT4裏帶有QWebView類,這個類可以加載一個網頁的html文件。
使用方法爲:
1、在pro文件裏增加webkit:

QT += core gui webkit

2、引入頭文件。
3、定義對象:MyWebView view;
4、啓用JavaScript的支持:

view.page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
view.settings()->setAttribute(QWebSettings::PluginsEnabled, true);

5、加載頁面:
view.load(QUrl(“web/index.html”));
6、顯示:
view.show();
7、啓用控制檯調試(類似谷歌瀏覽器,Safari瀏覽器的控制檯,調試頁面用):

    // 啓用調試
    QWebSettings *settings = view.settings();
    settings->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
    QWebInspector *inspector = new QWebInspector(this);
    inspector->setWindowFlags(Qt::Dialog);
    inspector->setMinimumSize(1000, 200);
    inspector->setPage(view.page());

8、定義一個JavaScript的類,給頁面提供調用QT的方法,這裏我只提供代碼片段:

#ifndef JAVASCRIPT_H
#define JAVASCRIPT_H

#include <QObject>

class Javascript: public QObject
{
    Q_OBJECT

public:
    Javascript(Widget *w);
public slots:
    void minusWindow();
    void maxmumWindow();
    void closeWindow();
    void setTitle(const QString &title);
}
#endif // JAVASCRIPT_H

注意只有public slots裏的方法纔可以供頁面使用。
定義好這個類以後,註冊到view裏:

Javascript js(this);
view.page()->mainFrame()->addToJavaScriptWindowObject("qt", &js);

這樣,在頁面的js裏,就多了一個叫qt的對象,可以調用如qt.setTitle(“新標題”)來爲軟件設置標題,也可以調用qt.closeWindow()來關閉軟件。

9、有時候,qt接收到數據會想要調用頁面裏提供的JS函數,我們可以用如下方法調用JS函數:

view.page()->mainFrame()
            ->evaluateJavaScript("setLoginByStatus(false)");

注意這裏的evaluateJavaScript參數是一個字符串,所以給JS傳參,可以用字符串參數、數字參數、true、false等一切在JS可一用的參數,但是要以字符串形式呈現。如果是巨大的JSON數據,可以用QT4的QJson擴展(這個擴展的引用較爲複雜,就不在這裏介紹了)將數據打包成Json字符串傳入參數裏。

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