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字符串传入参数里。

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