I’ve successfully added an C++ object to a QWebFrame with addToJavaScriptWindowObject,
and can call a slot on that object from javascript.
But what I really want to do is have one of those slots return a new object. For example, I have a slot like this, which returns a QObject derived class instance:
MyObject* MyApp::helloWorld()
{
//MyObject is dervied from QObject
return new MyObject();
}
I can call this slot from javascript successfully like this
var foo=myapp.helloWorld();
But foo appears to be empty, I can’t call any slots or access any
properties on it from Javascript.
Any ideas on how I can achieve this?
One rather ugly hack I’ve considered is to use addToJavaScriptWindowObject to drop the object I want to return into the window object with a random name, then have my slot return the name of the object instance instead:
The JS can be written to check if the return value is a string, and if it is, grab the object from the window.:
A little ugly, but will get me by until a better method comes along. Future Qt versions are going unify the scripting support so that it’s all based on the JavaScriptCore in WebKit, so hopefully this will improve then!