Mic*_*ine 2 javascript c++ qt webkit device
我是Qt的新手,我想做的是:
但是如何在Qt中为Webkit添加一些自定义函数/类?
我已经完成了一个QWebKit项目,在该项目中我建立了Javascript和我的C++代码之间的桥梁.
为此,我使用了以下方法:
this->page()->mainFrame()->addToJavaScriptWindowObject( "god", this );
Run Code Online (Sandbox Code Playgroud)
这允许您使用指定为第一个参数的对象,将传递给addToJavaScriptWindowObject的对象的方法作为第二个参数从Javascript执行.
这是一个例子:
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()";
}
}
Run Code Online (Sandbox Code Playgroud)
然后,从Javascript我可以做:
$('input:text').keydown( god.onChange );
Run Code Online (Sandbox Code Playgroud)
因此,每当我按下输入框中的某个键时,执行god.onChange(),执行Browser :: onChange()插槽.
这样就可以避免扩展JS api.