Spec-Zone.ru › Qt 5.11

Написание сценариев для приложений

Qt поддерживает сценарии приложений с использованием JavaScript. Следующие руководства и справочники охватывают аспекты программирования с JavaScript и Qt.

Классы сценариев

Следующие классы добавляют возможности сценариев в приложения Qt.

QJSEngine

Окружение для оценки кода JavaScript

QJSValue

Выступает в роли контейнера для типов данных Qt/JavaScript

QJSValueIterator

Итератор по аналогии с Java для QJSValue

Основные принципы использования

Для оценки кода сценария создается QJSEngine и вызывается его функция evaluate(), передавая в качестве аргумента код сценария (текст) для оценки.

QJSEngine engine;
qDebug() << "the magic number is:" << engine.evaluate("1 + 2").toNumber();

Возвращаемое значение будет результатом оценки (представленным объектом QJSValue); это значение можно преобразовать в стандартные типы C++ и Qt.

Пользовательские свойства могут быть доступны для сценариев путем их регистрации в движке сценариев. Это наиболее просто делается путем установки свойств Глобального объекта движка сценариев:

engine.globalObject().setProperty("foo", 123);
qDebug() << "foo times two is:" << engine.evaluate("foo * 2").toNumber();

Это размещает свойства в среде сценария, делая их доступными для кода сценария.

Обеспечение доступа к объекту QObject для движка сценариев

Любой экземпляр, основанный на QObject, может быть доступен для использования со сценариями.

Когда QObject передается функции QJSEngine::newQObject(), создается объект-обертка Qt Script, который может быть использован для предоставления сигналов, слотов, свойств и дочерних объектов QObject сценариям.

Вот пример, как сделать экземпляр подкласса QObject доступным для кода сценария под именем "myObject":

QJSEngine engine;
QObject *someObject = new MyObject;
QJSValue objectValue = engine.newQObject(someObject);
engine.globalObject().setProperty("myObject", objectValue);

Это создаст глобальную переменную, названную myObject в среде сценария. Переменная служит прокси для базового объекта C++. Обратите внимание, что имя переменной сценария может быть любым; т. е. оно не зависит от QObject::objectName().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qtjavascript.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API