QtScript 101
As you might have read in Kent's blog post yesterday, the latest Qt 4.3 snapshots just gained a javascript interpreter. I had a bit of a play with it yesterday and it's pretty neat. Unfortunately it doesn't expose any fun objects by default, so I decided to make it possible to create QWidgets.
The result is a tiny demo that gives you the ability to create instances of any QWidget that Designer supports. The glue code itself is tiny:
void UiUtils::installWidgets( QScriptEngine *engine ) { QScriptValue globalObject = engine->globalObject(); QUiLoader loader; QStringList widgets = loader.availableWidgets(); for ( int i=0; i < widgets.size(); ++i ) { QScriptValue fun = engine->scriptValue( createWidget ); fun.setProperty( QString("functionName"), engine->scriptValue(widgets[i]) ); globalObject.setProperty(widgets[i], fun); } } QScriptValue UiUtils::createWidget(QScriptContext *context, QScriptEngine *engine) { QString self = context->callee().property( "functionName" ).toString(); QUiLoader loader; QWidget *w = loader.createWidget( self ); return engine->scriptValueFromQObject( w ); }
And now you can use the qscriptdemo command prompt to run code like this:
var x= new QTextEdit(); x.show(); testobj.exec(); // This just provides access to app.exec()
Neat eh?
Edit: Here's a link to the code http://xmelegance.org/devel/qscriptdemo.tar.gz.