crossplatform.ru

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


  Ответ в привязка переменных в QtScript
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
call_me_Frank Дата 29.7.2015, 11:02
 
Цитата(lanz @ 29.7.2015, 10:39) *
Цитата
obj.property("var_A")

Могу уже подзабыть кое что, но насколько я помню obj.var_A работает так же.


работает, спасибо )
lanz Дата 29.7.2015, 10:39
 
Цитата
obj.property("var_A")

Могу уже подзабыть кое что, но насколько я помню obj.var_A работает так же.
call_me_Frank Дата 29.7.2015, 10:09
 
Цитата(lanz @ 28.7.2015, 21:35) *
Можно создать QObject и передать его в скрипт,
все Property этого объекта будут синхронно менятся в C++ и в скрипте.
http://doc.qt.io/qt-5/properties.html


Отличная идея! Похоже, это именно то, что мне и нужно :clapping:

P.S....но всё же не именно то, что мне хотелось бы )) к этим переменным придется обращаться через obj.property("var_A") вместо простого имени переменной. Можно же передать движку QObject лишь однажды, задать ему скриптовое имя и обращаться к нему при любом запуске скрипта. Для переменных попроще (типа int, string, double, ...) такой возможности нет?
lanz Дата 28.7.2015, 21:35
  Можно создать QObject и передать его в скрипт,
все Property этого объекта будут синхронно менятся в C++ и в скрипте.
http://doc.qt.io/qt-5/properties.html
JohnZ Дата 28.7.2015, 19:00
  Т.е. в карте у тебя лежит имя переменной и рядом лежит сама переменная и оба
эти объекта тебе нужны в скрипте вне зависимости от кол-ва запусков скрипта ?! Правильно ?
Если так, то при запуске скрипта, он так или иначе получает определённое окружение
от Engine, и если тебе нужны какие-либо "статические" переменные в скрипте, нужно
позаботиться об этом окружении, т.е. без передачи контейнера никак, imho
При выходе из скрипта, окружение "затирается" и при новом запуске, окружение уже другое ...
call_me_Frank Дата 28.7.2015, 18:09
  Ну вот смотри, можно сказать, что сейчас переменная привязана по значению - поэтому перед каждым запуском скрипта её приходится задавать заново. А мне нужно что-то вроде динамической привязки - я говорю скриптовому движку, что мне нужна переменная, которая привязана к некоторой переменной в классе и внутри скрипта будет называться var_A.

Пусть переменная в классе имеет значение 56, я запускаю скрипт - он выводит на экран значение 56, затем переменная в классе получает новое значение (12), я снова запускаю скрипт на исполнение - и он выводит значение 12.

В общем-то не суть, является ли переменная самостоятельной отдельной величиной или частью карты...как мне кажется ) возможно, нужны будут и отдельные и те, что в карте.

P.S. в скрипте мне не нужно видеть контейнер, но мне нужно видеть его элементы как самостоятельные переменные внутри скрипта.
JohnZ Дата 28.7.2015, 17:54
  Не совсем понятно что тебе нужно. Тебе нужно видеть карту или переменную ?
Каждая переменная в скрипте это отдельный объект, и что туда положишь, то
там и будет, хош int хош QObject или ещё чего нибудь. Хэш это для доступа и
быстрого поиска из С++, а в скрипте поиском переменной по имени занимается Engine.
call_me_Frank Дата 28.7.2015, 17:18
  Всем привет!

у меня есть некая карта или массив данных, например QHash<str,str>, в которой лежат пары имя_переменной - значение. Значения этих переменных меняются со временем. Как можно привязать значения этих переменных к переменным внутри скрипта - создать отображение этих данных в скрипте?

Допустим, в карте лежит пара ("var_A", 56). Мне нужно, чтобы внутри скрипта у меня была переменная 'var_A' и значение её соответствовало значению внутри пары в любой момент времени.

Сейчас у меня происходит запуск скрипта с некоторой периодичностью и перед каждым запуском приходится задавать переменную скрипта:

engine->globalObject().setProperty("var_A", data.value("var_A"));


и меня это не очень устраивает ) что посоветуете?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 5:06