编辑:链接正在工作,但以防链接再次断开
[Link]
理查德·摩尔
…
有一个问题我在qt和qt上见过好几次,我感兴趣的是如何
将自定义(特定于应用程序)API添加到中默认可用的API
QtWebKit。这其实很简单(一旦你知道怎么做),我会告诉你
下面。本文将展示一个简单的示例,说明如何使对象可用
从javascript,包括对对象调用方法和返回值
从C++。
有两件事你需要知道才能完成
集成,第一个是
qwebframe,这将使指定的qobject从
JavaScript。您需要知道的第二件事是
每次清除javascript窗口对象时,这种方式都将消失-
即每次用户导航到新页面时。为了防止这种情况
问题是,qwebframe提供一个信号,告诉您对象何时
已清除,允许您重新添加自定义API。这其实要简单得多
比听起来还多!
在本例中,其核心实际上是通过两种方法实现的,它们是
如下所示:
void MyApi::setWebView( QWebView *view )
{
QWebPage *page = view->page();
frame = page->mainFrame();
attachObject();
connect( frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(attachObject()) );
}
void MyApi::attachObject()
{
frame->addToJavaScriptWindowObject( QString("MyApi"), this );
}
为了使
myapi对象对javascript可见。myapi类提供两个公共时隙:
public slots:
void doSomething( const QString ¶m );
int doSums( int a, int b );
第一个插槽只是将消息记录到调试输出,第二个插槽返回
它的两个参数之和(是的,插槽可以返回东西!)他们被叫来了
从这样的javascript:
MyApi.doSomething( 'Hello from JS page 2!!!!' );
sum = MyApi.doSums( 2, 3 );
alert( 'C++ says the sum is ' + sum );
就这些!您可以从>
http://xmelegance.org/devel/qtwebkitextension.tar.gz
.