Класс QAxScript
Класс QAxScript предоставляет оболочку вокруг кода сценариев. Подробнее...
| Заголовок: | #include <QAxScript> |
| qmake: | QT += axcontainer |
| Наследует: | QObject |
Типы
| Перечисление | FunctionFlags { FunctionNames, FunctionSignatures } |
Публичные функции
| QAxScript(const QString &name, QAxScriptManager *manager) | |
| virtual | ~QAxScript() override |
| QVariant | call(const QString &function, const QVariant &var1 = QVariant(), const QVariant &var2 = QVariant(), const QVariant &var3 = QVariant(), const QVariant &var4 = QVariant(), const QVariant &var5 = QVariant(), const QVariant &var6 = QVariant(), const QVariant &var7 = QVariant(), const QVariant &var8 = QVariant()) |
| QVariant | call(const QString &function, QList<QVariant> &arguments) |
| QStringList | functions(QAxScript::FunctionFlags flags = FunctionNames) const |
| bool | load(const QString &code, const QString &language = QString()) |
| QString | scriptCode() const |
| QAxScriptEngine * | scriptEngine() const |
| QString | scriptName() const |
Сигналы
| void | entered() |
| void | error(int code, const QString &description, int sourcePosition, const QString &sourceText) |
| void | finished(int code, const QString &source, const QString &description, const QString &help) |
| void | finished(const QVariant &result) |
| void | finished() |
| void | stateChanged(int state) |
Подробное описание
Каждый экземпляр класса QAxScript представляет собой фрагмент кода сценария на определённом языке сценариев. Код загружается в движок сценария с помощью load(). Объявленные в коде функции можно вызывать с помощью call().
Сценарий предоставляет обратную связь приложению через сигналы. Наиболее важный сигнал — error() сигнал. Прямой доступ к QAxScriptEngine предоставляется через функцию scriptEngine().
Предупреждение: Этот класс недоступен с компилятором bcc5.5.
См. также QAxScriptEngine, QAxScriptManager, QAxBase и ActiveQt Framework.
Документация по типам членов
Перечисление QAxScript::FunctionFlags
Это перечисление FunctionFlags описывает форматирование для интроспекции функций.
| Константа | Значение | Описание |
|---|---|---|
QAxScript::FunctionNames |
0 |
Возвращаются только имена функций. |
QAxScript::FunctionSignatures |
1 |
Возвращаются функции с сигнатурами. |
Документация по функциям-членам
QAxScript::QAxScript(const QString &name, QAxScriptManager *manager)
Создаёт объект QAxScript с именем name и регистрирует его в QAxScriptManager manager. Обычно это выполняется классом QAxScriptManager при загрузке сценария.
Сценарий всегда должен иметь имя. Менеджер необходим для того, чтобы код сценария мог ссылаться на объекты в приложении. Менеджер manager принимает владение объектом.
[signal] void QAxScript::entered()
Этот сигнал излучается, когда движок сценария начал выполнение кода.
[signal] void QAxScript::error(int code, const QString &description, int sourcePosition, const QString &sourceText)
Этот сигнал излучается при возникновении ошибки выполнения во время работы сценария.
code, description, sourcePosition и sourceText содержат информацию об ошибке выполнения.
[signal] void QAxScript::finished(int code, const QString &source, const QString &description, const QString &help)
Это перегруженная функция.
code, source, description и help содержат информацию об исключении при завершении сценария.
Примечание: Сигнал finished перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную функцию для получения указателя на функцию, как показано в этом примере:
connect(axScript, QOverload<int, const QString &, const QString &, const QString &>::of(&QAxScript::finished),
[=](int code, const QString &source, const QString &description, const QString &help){ /* ... */ });
[signal] void QAxScript::finished(const QVariant &result)
Это перегруженная функция.
result содержит результат сценария. Это будет недопустимый QVariant, если сценарий не возвращает значения.
Примечание: Сигнал finished перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную функцию для получения указателя на функцию, как показано в этом примере:
connect(axScript, QOverload<const QVariant &>::of(&QAxScript::finished),
[=](const QVariant &result){ /* ... */ });
[signal] void QAxScript::finished()
Этот сигнал излучается, когда движок сценария завершил выполнение кода.
Примечание: Сигнал finished перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную функцию для получения указателя на функцию, как показано в этом примере:
connect(axScript, QOverload<>::of(&QAxScript::finished),
[=](){ /* ... */ });
[signal] void QAxScript::stateChanged(int state)
Этот сигнал излучается, когда движок сценария изменяет состояние. state может принимать любое значение в перечислении QAxScriptEngine::State.
[override virtual] QAxScript::~QAxScript()
Уничтожает объект, освобождая все выделенные ресурсы.
QVariant QAxScript::call(const QString &function, const QVariant &var1 = QVariant(), const QVariant &var2 = QVariant(), const QVariant &var3 = QVariant(), const QVariant &var4 = QVariant(), const QVariant &var5 = QVariant(), const QVariant &var6 = QVariant(), const QVariant &var7 = QVariant(), const QVariant &var8 = QVariant())
Вызывает функцию function, передавая параметры var1, var1, var2, var3, var4, var5, var6, var7 и var8 в качестве аргументов и возвращает значение, возвращаемое функцией, или недопустимый QVariant, если функция не возвращает значение или при ошибке вызова функции.
См. QAxScriptManager::call(), чтобы узнать больше о том, как вызывать функции сценария.
QVariant QAxScript::call(const QString &function, QList<QVariant> &arguments)
Это перегруженный метод.
Вызывает функцию function, передавая параметры arguments, и возвращает результат. Возвращается, когда выполнение скрипта завершено.
См. QAxScriptManager::call() для получения дополнительной информации о вызове функций скрипта.
QStringList QAxScript::functions(QAxScript::FunctionFlags flags = FunctionNames) const
Возвращает список всех функций в этом скрипте, если соответствующий движок скриптов поддерживает интроспекцию; в противном случае возвращает пустой список. Функции предоставляются либо с полными прототипами, либо только в виде имён, в зависимости от значения flags.
См. также QAxScriptEngine::hasIntrospection().
bool QAxScript::load(const QString &code, const QString &language = QString())
Загружает исходный код скрипта code, написанный на языке language, в движок скриптов. Возвращает true, если code был успешно загружен в движок скриптов; в противном случае возвращает false.
Если language пустое (по умолчанию), оно будет определено эвристически. Если code содержит строку End Sub, она будет интерпретирована как VBScript, иначе как JScript. Дополнительные языки сценариев могут быть зарегистрированы с помощью QAxScriptManager::registerEngine().
Эта функция может быть вызвана только один раз для каждого объекта QAxScript, что выполняется автоматически при использовании QAxScriptManager::load().
QString QAxScript::scriptCode() const
Возвращает код скрипта или пустую строку, если код ещё не загружен.
См. также load().
QAxScriptEngine *QAxScript::scriptEngine() const
Возвращает указатель на движок скриптов.
Вы можете использовать возвращённый объект для подключения сигналов к функциям скрипта или для прямого доступа к движку скриптов.
QString QAxScript::scriptName() const
Возвращает имя скрипта.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qaxscript.html