Проблема в том, что созданный объект 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
"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