JUL
5
2009
|
Adding custom objects to Qt WebkitOne question I've seen come up several times on #qt and qt-interest is how to There are two things you really need to know in order to perform this The core of this is really implemented in two methods in the example, they're 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 ); }
This code is all that you need in order to make all of the public slots of the public slots: void doSomething( const QString ¶m ); int doSums( int a, int b );
The first slot simply logs a message to the debug output, the second returns MyApi.doSomething( 'Hello from JS page 2!!!!' ); sum = MyApi.doSums( 2, 3 ); alert( 'C++ says the sum is ' + sum ); And that's all there is to it! You can download the code from http://xmelegance.org/devel/qtwebkitextension.tar.gz. |
![]() |
Comments
dynamic methods
What if the plugin has its own script access, like NPP objects, so something where you don't know upfront which methods/properties are available. Eg.
myobject.gotoFrame(10);
then you need to query the embedded object if it supports 'gotoFrame' and whether it's a property or method.
How would you solve such a case?
I don't know a good solution
I don't know a good solution to that right now, hopefully the deeper integration of QtScript and JSCore planned for 4.7 will address this though.