Доброе время суток. У меня такой вопрос: как из engine.globalObject() вытащить все элементы класса test, доступного скриптам?
Проблема в том, что созданный объект tst является объектом класса Object, а не test. Подскажите в чём ошибка.
Код:
Раскрывающийся текст
namespace MAIN
{
    QScriptEngine *se = new QScriptEngine();
}
class test : public QObject
{
        Q_OBJECT
    public:
        test ( QObject *p = 0 ) : QObject ( p )
        {
            qDebug() << "12345";
        };
};
Q_SCRIPT_DECLARE_QMETAOBJECT ( test, QObject* )
int main ( int argc, char** argv )
{
    using namespace MAIN;
    QScriptValue mytestclass = se->scriptValueFromQMetaObject<test>();
    se->globalObject().setProperty ( "test", mytestclass );
    se->evaluate ( "tst = new test(); tst = [[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]; b=new Array();" );
    QScriptValue v = se->globalObject();
    QScriptValueIterator it ( v );

    while ( it.hasNext() )
    {
        it.next();
        if ( it.flags() & QScriptValue::SkipInEnumeration )
            continue;
        qDebug()  << it.name() << " " << it.value().toString() <<it.value().isQMetaObject();
    }
    return 0;
}

Вывод:
Раскрывающийся текст
12345
"test" "[object QMetaObject]" true true
"tst" "1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9" false true
"b" "" false true