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