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)); } }
Комментариев нет:
Отправить комментарий