crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 18:17