Thanks Wysota,
The best solution is using "setDefaultPrototype" so it applies to every inheriting objects.
Here is the implementation.
(Courtesy of Kent himself from Trolltech).
#include <QtScript>
#include <QtGui>
static QScriptValue QWidget_prototype_move(QScriptContext *ctx, QScriptEngine *eng)
{
QWidget *widget
= qscriptvalue_cast<QWidget
*>
(ctx
->thisObject
());
Q_ASSERT(widget != 0);
widget->move(ctx->argument(0).toInt32(), ctx->argument(1).toInt32());
return eng->undefinedValue();
}
int main(int argc, char **argv)
{
QScriptEngine eng;
QScriptValue widgetProto = eng.newObject();
widgetProto.setProperty("move", eng.newFunction(QWidget_prototype_move));
eng.setDefaultPrototype(qMetaTypeId<QWidget*>(), widgetProto);
win.resize(400, 400);
QScriptValue scriptWindow = eng.newQObject(&win);
scriptWindow.property("move").call(scriptWindow, QScriptValueList() << 100 << 200);
win.show();
return app.exec();
}
#include <QtScript>
#include <QtGui>
static QScriptValue QWidget_prototype_move(QScriptContext *ctx, QScriptEngine *eng)
{
QWidget *widget = qscriptvalue_cast<QWidget*>(ctx->thisObject());
Q_ASSERT(widget != 0);
widget->move(ctx->argument(0).toInt32(), ctx->argument(1).toInt32());
return eng->undefinedValue();
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QScriptEngine eng;
QScriptValue widgetProto = eng.newObject();
widgetProto.setProperty("move", eng.newFunction(QWidget_prototype_move));
eng.setDefaultPrototype(qMetaTypeId<QWidget*>(), widgetProto);
QMainWindow win;
win.resize(400, 400);
QScriptValue scriptWindow = eng.newQObject(&win);
scriptWindow.property("move").call(scriptWindow, QScriptValueList() << 100 << 200);
win.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks