[Interest] reading javascript body from c++

Thomas McGuire thomas.mcguire at kdab.com
Mon Dec 10 10:01:54 CET 2012


Hi,

On Saturday 08 December 2012 20:18:50 Andy Mayer wrote:
> Am 08.12.2012 19:25, schrieb Thomas McGuire:
> > On Saturday 08 December 2012 11:34:17 Andy Mayer wrote:
> >> I have a question regarding the possibilty of reading the body of a
> >> javascript function from c++. I want to create a DSL based on QML and I
> >> have to read the body of a javascript function.
> >> 
> >> e.g.
> >> 
> >> QML:
> >>    Item {
> >>    
> >>        function action() {
> >>        
> >>            console.log("Got message:", msg)
> >>            return "some return value"
> >>        
> >>        }
> >>    
> >>    }
> >> 
> >> C++:
> >> QDeclarativeEngine engine;
> >> QDeclarativeContext context(&engine);
> >> 
> >> QDeclarativeComponent component(&engine,
> >> QUrl::fromLocalFile("MyItem.qml")); QObject* qmlSpenat =
> >> component.beginCreate(&context);
> >> 
> >> QString actionString=qmlSpenat->property("action");//??? it doesn't
> >> work, anything else?
> > 
> > Should work with QMetaObject::invokeMethod().
> > 
> 
> Thanks for the answer, but I don't want to invoke the javascript method.
> I want to read out the body of the javascript method from C++.
> 
> e.g.: If I have a Javascript method within a qml-file
> 
> function action() { var x=0; return x+2;}
> 
> the question is: Is it possible to get the body "var x=0; return x+2;"
> as QString (or something else?) from C++ side?

Ah I see, that is quite an unusual usecase. Getting the function body as a 
string from the C++ side is not possible. However, the other way around is 
doable, you could pass the function body string from QML to C++, either with a 
function call or with a property binding.
Something like
	myCppObj.passFunctionString(action.toString())
Assuming that passFunctionString() is a C++ function that takes a QString as 
argument.

Regards,
Thomas
-- 
Thomas McGuire | thomas.mcguire at kdab.com | Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Tel. Germany +49-30-521325470, Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3637 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20121210/8013d28f/attachment.bin>


More information about the Interest mailing list