[Qt-interest] QScriptValue::setPrototype doens't work in Qt4.6?
Dong Tiger
idlecat511 at gmail.com
Wed Dec 30 07:22:44 CET 2009
Bug is fired:
http://bugreports.qt.nokia.com/browse/QTBUG-7066
The sample code attached to this bug is updated. If method1 or method2 can
be fixed to work, that will be great.
2009/12/29 Kent Hansen <khansen at trolltech.com>
> Hi,
> Method 3 works here after I modify your queryProperty() to return
> Handles{Read,Write}Access.
> But if the other methods work with 4.5 but not with 4.6, that sounds
> like unintended regressions. I recommend creating a task at
> bugreports.qt.nokia.com.
>
> Regards,
> Kent
>
>
>
> Dong Tiger skrev:
> > Sorry, the sample code should be as following. And I've verified that
> > method 1-4 work with Qt4.5.
> >
> > #include <QScriptEngine>
> > #include <QCoreApplication>
> > #include <QScriptClass>
> > #include <QtDebug>
> >
> > class ResolveClass : public QScriptClass {
> > public:
> > ResolveClass(QScriptEngine *engine) : QScriptClass(engine) {}
> > QScriptValue property(const QScriptValue &obj, const QScriptString
> > &name, uint id) {
> > qDebug() << name;
> > return QScriptValue();
> > }
> > QueryFlags queryProperty(const QScriptValue &obj, const
> > QScriptString &name, QueryFlags flags, uint *id) {
> > qDebug() << name;
> > return 0;
> > }
> > };
> >
> > int main(int argc, char **argv) {
> > QCoreApplication app(argc, argv);
> > QScriptEngine engine;
> > ResolveClass resolve_class(&engine);
> >
> > // method1: doesn't work.
> > // engine.globalObject().setScriptClass(&resolve_class);
> >
> > // method2: doesn't work.
> > //
> engine.globalObject().setPrototype(engine.newObject(&resolve_class));
> >
> > // method3: doesn't work.
> > // engine.setGlobalObject(engine.newObject(&resolve_class));
> >
> > // method4: doesn't work.
> > // QScriptValue global = engine.newObject();
> > // global.setPrototype(engine.newObject(&resolve_class));
> > // engine.setGlobalObject(global);
> >
> > // This works but not what I need.
> > QScriptValue global = engine.newObject();
> > global.setProperty("b", 200);
> > engine.setGlobalObject(global);
> >
> > engine.evaluate("var a = 100; a = b;");
> > QScriptValue a = engine.globalObject().property("a");
> > qDebug() << a.toInt32() << "\n";
> > return 0;
> > }
> >
> >
> > 2009/12/28 Dong Tiger <idlecat511 at gmail.com <mailto:idlecat511 at gmail.com
> >>
> >
> > Hi,
> >
> > My code that works with Qt4.5 doesn't work with 4.6. I wrote a
> > short code to demonstrate the problem. What I want to do is trying
> > to get ResolveClass::property being called when a global variable
> > b is referred.
> >
> > #include <QCoreApplication>
> > #include <QScriptEngine>
> > #include <QScriptClass>
> > #include <QtDebug>
> >
> > class ResolveClass : public QScriptClass {
> > public:
> > ResolveClass(QScriptEngine *engine) : QScriptClass(engine) {}
> > QScriptValue property(const QScriptValue &obj, const
> > QScriptString &name, uint id) {
> > qDebug() << name;
> > }
> > };
> >
> > int main(int argc, char **argv) {
> > QCoreApplication app(argc, argv);
> > QScriptEngine engine;
> > ResolveClass resolve_class(&engine);
> >
> > // method1: doesn't work.
> > // engine.globalObject().setScriptClass(&resolve_class);
> >
> > // method2: works with 4.5 but not with 4.6.
> > //
> > engine.globalObject().setPrototype(engine.newObject(&resolve_class));
> >
> > // method3: doesn't work.
> > // engine.setGlobalObject(engine.newObject(&resolve_class));
> >
> > // method4: doesn't work.
> > // QScriptValue global = engine.newObject();
> > // global.setPrototype(engine.newObject(&resolve_class));
> > // engine.setGlobalObject(global);
> >
> > // This works but not what I need.
> > QScriptValue global = engine.newObject();
> > global.setProperty("b", 200);
> > engine.setGlobalObject(global);
> >
> > engine.evaluate("var a = 100; a = b;");
> > QScriptValue a = engine.globalObject().property("a");
> > qDebug() << a.toInt32() << "\n";
> > return 0;
> > }
> >
> > I don't have Qt4.5 at hand so I didn't verify if these methods
> > work with Qt4.5 except method2.
> > Any idea of that? Thanks in advance.
> >
> > --
> > Tiger
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Qt-interest mailing list
> > Qt-interest at trolltech.com
> > http://lists.trolltech.com/mailman/listinfo/qt-interest
> >
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20091230/1a342b85/attachment.html
More information about the Qt-interest-old
mailing list