QtScript Bindings Generator -- это плагин, позволяющий использовать Qt-шные классы в скриптовом коде.
Как это выглядит?
Использовать QtScript Bindings Generator очень удобно, если нужно оставить возможность пользователю вносить изменения в интерфейс или ход исполнения программы.
Где скачать?
Репозиторий QtScript Bindings Generator git://gitorious.org/qt-labs/qtscriptgenerator.git.
Инсталляция
Инсталляция не должна вызвать проблем так как хорошо описана в readme, опишу только ключевые моменты.
Следовательно если экземпляр скриптового класса имеет "переопределенную" функцию, то вызывается она, если нет -- то вызывается функция класса.
Как это выглядит?
var w = new QWidget(); w.setGeometry(100, 100, 100, 100); w.show();
Использовать QtScript Bindings Generator очень удобно, если нужно оставить возможность пользователю вносить изменения в интерфейс или ход исполнения программы.
Где скачать?
Репозиторий QtScript Bindings Generator git://gitorious.org/qt-labs/qtscriptgenerator.git.
Инсталляция
Инсталляция не должна вызвать проблем так как хорошо описана в readme, опишу только ключевые моменты.
- dll-ки должны были скомпилированный в одинаковом режиме (release или debug);
- dll-ки должны находится в папке /path/script/;
- А подключать их нужно указав путь /parh. Для наглядности:
QStringList list = app.libraryPath(); list<<"/usr/lib/qtscript/"; QCoreApplication::setLibraryPaths(list) ;
Хотя dll-ки находятся /usr/lib/qtscript/script/
Как это работает
Парсер проходится по классах библиотеки и генерирует новые классы, функции которых уже имеют вид
void QtScriptShell_QTabBar::actionEvent(QActionEvent* arg__1)
{
QScriptValue _q_function = __qtscript_self.property("actionEvent");
if (!_q_function.isFunction() || QTSCRIPT_IS_GENERATED_FUNCTION(_q_function)
|| (__qtscript_self.propertyFlags("actionEvent") & QScriptValue::QObjectMember)) {
QTabBar::actionEvent(arg__1);
} else {
QScriptEngine *_q_engine = __qtscript_self.engine();
_q_function.call(__qtscript_self,
QScriptValueList()
<< qScriptValueFromValue(_q_engine, arg__1));
}
}
Комментариев нет:
Отправить комментарий