Автор Тема: Вызов функций C++ из QtScript  (Прочитано 4947 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4186
Вызов функций C++ из QtScript
« : 02 Май 2013, 20:37:49 »
Казалось бы пустяковая вещь, но перерыв документацию и изрядно погуглив - ноль информации, только аналогичные тупые вопросы, на которые не менее тупые профи посылают читать документацию O.o

В доках полно примеров как оформить функцию, но примеры исключительно о Getter'ах или Setter'ах, что напрочь сбивает с толку, а как вызвать функцию именно как функцию (с параметрами или без) нигде не показано. Да кончено - на деле все просто, но совершенно не очевидно, для того кто этот QtScript первый раз в жизни видит...

А ларчик просто раскрывался, в функции setProperty параметр PropertyFlags надо оставить как есть по умолчанию (KeepExistingFlags), без всяких  QScriptValue::PropertyGetter | QScriptValue::PropertySetter, которые по сути превращают вашу функцию в свойство, после чего она не может быть вызвана в классическом смысле.

Привожу пример внедрения функции:

Код: Text
  1. QScriptValue getField(QScriptContext *ctx, QScriptEngine *eng)
  2. {
  3.     return 5;
  4. }
  5.  

Код: Text
  1. QScriptEngine scengine;
  2. scengine.globalObject().setProperty("getField", scengine.newFunction(getField));
  3. qDebug() << "is:" << scengine.evaluate("1 + 2 + getField()").toNumber();
  4.  

Результат = 8 )

ПС. Речь о 4-м Qt.
« Последнее редактирование: 03 Май 2013, 04:18:57 от Altmer »
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Oleg

  • Гость
Re: Вызов функций C++ из QtScript
« Ответ #1 : 02 Май 2013, 21:24:12 »
А у программеров частенько программы выходят чаще чем документация к ним., а то и вовсе без документации. А потом все додумывают.
Хотя мне показалось что Qt очень круто про документирован.

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4186
Re: Вызов функций C++ из QtScript
« Ответ #2 : 03 Май 2013, 04:08:45 »
Да все там продокументировано, правда кривовато в данном случае )
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"