crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Вопрос по скриптам, как из engine.globalObject() вытащить все элементы своего класса
LEO
  опции профиля:
сообщение 11.4.2009, 16:09
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 8.3.2009
Пользователь №: 595

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброе время суток. У меня такой вопрос: как из 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 4:00