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字符串傳入參數裏。