Мастерская > Теория и практика

Вызов функций C++ из QtScript

(1/1)

Altmer:
Казалось бы пустяковая вещь, но перерыв документацию и изрядно погуглив - ноль информации, только аналогичные тупые вопросы, на которые не менее тупые профи посылают читать документацию O.o

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

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

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


--- Код: Text ---QScriptValue getField(QScriptContext *ctx, QScriptEngine *eng){    return 5;} 

--- Код: Text ---QScriptEngine scengine;scengine.globalObject().setProperty("getField", scengine.newFunction(getField));qDebug() << "is:" << scengine.evaluate("1 + 2 + getField()").toNumber(); 
Результат = 8 )

ПС. Речь о 4-м Qt.

Oleg:
А у программеров частенько программы выходят чаще чем документация к ним., а то и вовсе без документации. А потом все додумывают.
Хотя мне показалось что Qt очень круто про документирован.

Altmer:
Да все там продокументировано, правда кривовато в данном случае )

Навигация

[0] Главная страница сообщений

Перейти к полной версии