Qt编程:如何在webkit中扩展Javascript API
我是Qt的新手,我正在尝试做的是:Qt编程:如何在webkit中扩展Javascript API,javascript,c++,qt,webkit,device,Javascript,C++,Qt,Webkit,Device,我是Qt的新手,我正在尝试做的是: 使用Qt框架创建Linux应用程序 此应用程序显示来自Internet的一些网页 我想扩展JavaScript API以访问一些设备和基于设备的数据,这意味着可以使用Webkit中的JavaScript控制一些设备 但是如何在Qt? < p>中添加一些定制函数/类到WebKIT中。我做了一个QWebKIT项目,在其中我架起了JavaScript和C++代码之间的桥梁。 为此,我使用了以下方法: this->page()->mainFrame()-&
<>但是如何在Qt? < p>中添加一些定制函数/类到WebKIT中。我做了一个QWebKIT项目,在其中我架起了JavaScript和C++代码之间的桥梁。 为此,我使用了以下方法:
this->page()->mainFrame()->addToJavaScriptWindowObject( "god", this );
这允许您使用指定为第一个参数的对象,执行作为Javascript的第二个参数传递给addToJavaScriptWindowObject的对象的方法
这里有一个例子:
class Browser : public QWebView
{
Q_OBJECT
public:
Browser( QWidget* parent=0 )
{
connect( this->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(onJavaScriptWindowObjectCleared()) );
}
public slots:
void onJavaScriptWindowObjectCleared()
{
// QString script = "console.log('init!');";
// this->page()->mainFrame()->evaluateJavaScript( script );
}
void onChange()
{
qDebug() << "Browser::onChange()";
}
}
所以每次我在输入框中按下一个键,就会执行god.onChange(),它执行Browser::onChange()slot
这样可以避免扩展JS api。幸运的是,有一些关于这方面的文档,最后:这里有一大堆Qt脚本示例:。这是我们正在跟踪的工作。如果你想尝试这个实验性的特性,请在或this中签出答案。但是,Qt脚本能够处理html+css+javascript吗?我想用我定制的javascript API显示整个网页。您过去的一些问题表明您正在使用设备、基于web的更新和地图。这是我的公司(TomTom)拥有多项专利的领域。选择解决方案后,您可能希望与IP律师核实此类解决方案是否侵犯版权。@MSalters提醒我永远不要购买TomTom设备。谢谢,对我帮助很大
$('input:text').keydown( god.onChange );