crossplatform.ru

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


  Ответ в Вопрос по скриптам
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
LEO Дата 11.4.2009, 16:09
  Доброе время суток. У меня такой вопрос: как из 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
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 1.4.2020, 17:58