Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QVariantMap в скрипт
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Script. Интеграция WebKit
Гость_rukudias_*
Привет Всем!
Нужно заполнить обьект QVariantMap и передать его в скрипт.
как это осуществить?
ViGOur
Как я понял из описания, примерно так:
     QScriptEngine engine;
     QVariantMap *pVarMap = new QVariantMap;
     // заполняешь pVarMap
     QScriptValue objectValue = engine.newQObject( pVarMap);
     engine.globalObject().setProperty( "myObject", objectValue);
rukudias
Дело в том что QVariantMap не дитё QObject! Втом то и прикол можно через обвертку.
а хотелось бы на прямую...
ViGOur
Цитата(rukudias @ 13.5.2009, 17:55) *
Дело в том что QVariantMap не дитё QObject!
Угу, не подумал об этом.

А чем обертка не устраивает?
rukudias
не ну должнош както без обвертки!

можно так то так нельзя инициализировать то что передаеш
но можно заполнять и возвращать
QScriptEngine scriptEngine;
QScriptValue script_map = scriptEngine.newObject();
scriptEngine.globalObject().setProperty("variant", script_map);

а хотелось вот так
QVariantMap store;

store["state"]=1;

//здесь чудоспособ передачи а в скрипте

if(variant["state"]==1)
{

}
else
{

}
ViGOur
Глянь в исходники QtScript и думаю все поймешь.
Благо дело они не большие. :)
rukudias
В исходнике не смотрел
сделал ТАК!
store["1"]=90;
QScriptValue script_map =scriptEngine.toScriptValue(store);
scriptEngine.globalObject().setProperty("variant", script_map);
BRE
Я это уже где-то расписывал, по моему в теме про вычисление формул.
Несколько месяцев ничего не писал, поэтому могут быть опечатки и всякие глюки. :)

Примерно так, я думаю. :)

// engin - указатель на объект скрипт-движка

QVariantMap map;

// Создали переменную массив
QScriptValue arr = engine->newArray( map.size() );

// По всем элементам массива
QMapIterator<QString, QVariant> i( map );
while( i.hasNext() )
{
    i.next();
    arr.setProperty( i.key(), engine->newVariant( i.value() ) );
}

// Регистрируем массив в контексте скрипт движка
engine->globalObject().setProperty( "mapArray", arr );
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.