QAxScriptManager Class
QAxScriptManager 클래스는 애플리케이션 객체와 스크립트 코드 간의 브리지를 제공합니다. 더 보기...
Header: | #include <QAxScriptManager> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake: | QT += axcontainer |
상속합니다: | QObject |
공용 함수
QAxScriptManager(QObject *parent = nullptr) | |
virtual | ~QAxScriptManager() override |
void | addObject(QAxBase *object) |
void | addObject(QObject *object) |
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 = QAxScript::FunctionNames) const |
QAxScript * | load(const QString &code, const QString &name, const QString &language) |
QAxScript * | load(const QString &file, const QString &name) |
QAxScript * | script(const QString &name) const |
QStringList | scriptNames() const |
시그널
void | error(QAxScript *script, int code, const QString &description, int sourcePosition, const QString &sourceText) |
정적 공용 멤버
bool | registerEngine(const QString &name, const QString &extension, const QString &code = QString()) |
QString | scriptFileFilter() |
상세 설명
QAxScriptManager는 QAxObject 또는 QAxWidget 을 통해 Qt 애플리케이션에 내장된 COM 객체와 Windows 스크립트 기술을 통해 제공되는 스크립팅 언어(일반적으로 JScript 및 VBScript) 사이의 브리지 역할을 합니다.
애플리케이션의 각 개별 문서에 대해 하나의 QAxScriptManager를 만들고 addObject()를 사용하여 스크립트가 액세스하는 데 필요한 COM 개체를 추가합니다. 그런 다음 load()를 사용하여 스크립트 소스를 열고 call()를 사용하여 함수를 호출합니다.
경고: 이 클래스는 bcc5.5 컴파일러에서 사용할 수 없습니다.
QAxScript, QAxScriptEngine, QAxBase 및 ActiveQt 프레임워크도참조하세요 .
멤버 함수 문서
[explicit]
QAxScriptManager::QAxScriptManager(QObject *parent = nullptr)
parent 은 QObject 생성자에 전달됩니다.
일반적으로 애플리케이션의 각 문서에 대해 하나의 QAxScriptManager를 생성하는 것이 일반적입니다.
[override virtual noexcept]
QAxScriptManager::~QAxScriptManager()
오브젝트를 파괴하여 할당된 모든 리소스를 해제합니다.
void QAxScriptManager::addObject(QAxBase *object)
관리자에 object 을 추가합니다. 이 관리자가 처리하는 스크립트는 코드에서 객체의 objectName 속성을 사용하여 객체에 액세스할 수 있습니다.
스크립트를 로드하기 전에 필요한 모든 개체를 추가해야 합니다.
void QAxScriptManager::addObject(QObject *object)
이 함수는 오버로드된 함수입니다.
object 에 대한 일반 COM 래퍼를 관리자에 추가합니다. object 은 QAxServer 모듈에서 제공하는 기능을 사용하여 COM 객체로 노출되어야 합니다. 이 함수를 사용하는 애플리케이션은 qaxserver 라이브러리에 대해 링크해야 합니다.
QVariant QAxScriptManager::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
대부분의 스크립트 엔진에서 지원되는 유일한 매개변수 유형은 "const QVariant&"입니다(예: JavaScript 함수를 호출하려면
function setNumber(number)
{
n = number;
}
사용
QValueList args; args << 5; script->call("setNumber(const QVariant&)", args);
dynamicCall 와 마찬가지로 매개변수를 함수 문자열에 직접 포함할 수 있습니다.
script->call("setNumber(5)");
하지만 이 방법은 속도가 느립니다.
인트로스펙션을 지원하지 않는 스크립트 엔진에서 제공하는 함수는 사용할 수 없으며 해당 script 객체에서 QAxScript::call()를 사용하여 직접 호출해야 합니다.
이 함수를 호출하면 해당 QAxScript 객체에서 call()을 직접 사용하는 것보다 속도가 상당히 느려질 수 있습니다.
QVariant QAxScriptManager::call(const QString &function, QList<QVariant> &arguments)
이 함수는 오버로드된 함수입니다.
arguments 을 매개변수로 전달하여 function 을 호출하고 결과를 반환합니다. 스크립트 실행이 완료되면 반환합니다.
[signal]
void QAxScriptManager::error(QAxScript *script, int code, const QString &description, int sourcePosition, const QString &sourceText)
이 신호는 script 을 실행하는 동안 실행 오류가 발생했을 때 발생합니다.
code, description, sourcePosition 및 sourceText 에는 실행 오류에 대한 정보가 포함되어 있습니다.
경고: 이 신호에 연결된 슬롯에서 script 을 삭제하지 마세요. 대신 deleteLater()를 사용하세요.
QStringList QAxScriptManager::functions(QAxScript::FunctionFlags flags = QAxScript::FunctionNames) const
사용 가능한 모든 함수가 포함된 목록을 반환합니다. 인트로스펙션을 지원하지 않는 스크립트 엔진에서 제공하는 함수는 목록에 포함되지 않습니다. 함수는 flags 의 값에 따라 전체 프로토타입으로 제공되거나 이름으로만 제공됩니다.
QAxScript *QAxScriptManager::load(const QString &code, const QString &name, const QString &language)
language 에 대한 스크립트 엔진을 사용하여 스크립트 소스 code 를 로드합니다. 이 스크립트는 나중에 비어 있으면 안 되는 name 을 사용하여 참조할 수 있습니다.
이 함수는 code 이 성공적으로 로드된 경우 지정된 code 에 대한 스크립트에 대한 포인터를 반환하고, 그렇지 않으면 0을 반환합니다.
language 이 비어 있으면 휴리스틱적으로 결정됩니다. code 에 "End Sub" 문자열이 포함되어 있으면 VBScript로, 그렇지 않으면 JScript로 해석됩니다. registerEngine ()를 사용하여 추가 스크립트 엔진을 등록할 수 있습니다.
스크립트를 로드하기 전에 addObject()를 사용하여 필요한 모든 객체를 추가해야 합니다. code 에서 이미 사용 가능한 함수를 선언하는 경우(언어에 관계없이) 첫 번째 함수는 오버로드되어 더 이상 call()을 통해 호출할 수 없지만 script 을 직접 호출하면 계속 사용할 수 있습니다.
addObject(), scriptNames() 및 functions()도 참조하세요 .
QAxScript *QAxScriptManager::load(const QString &file, const QString &name)
이 함수는 오버로드된 함수입니다.
file 에서 소스 코드를 로드합니다. 이 스크립트는 나중에 비어 있으면 안 되는 name 을 사용하여 참조할 수 있습니다.
이 함수는 file 이 성공적으로 로드된 경우 file 에 있는 코드의 스크립트 엔진에 대한 포인터를 반환하고, 그렇지 않으면 0을 반환합니다.
사용되는 스크립트 엔진은 파일의 확장자로 결정됩니다. 기본적으로 ".js" 파일은 JScript 파일로 해석되고 ".vbs" 및 ".dsm" 파일은 VBScript로 해석됩니다. registerEngine ()를 사용하여 추가 스크립트 엔진을 등록할 수 있습니다.
[static]
bool QAxScriptManager::registerEngine(const QString &name, const QString &extension, const QString &code = QString())
name 라는 스크립트 엔진을 등록하고 엔진을 찾으면 참을 반환하고, 그렇지 않으면 아무것도 하지 않고 거짓을 반환합니다.
스크립트 엔진은 지정된 extension 으로 파일을 로드할 때 또는 code 문자열이 포함된 소스 코드를 로드할 때 사용됩니다.
QAxScript *QAxScriptManager::script(const QString &name) const
name 라는 스크립트를 반환합니다.
반환된 포인터를 사용하여 QAxScript::call()를 통해 함수를 직접 호출하거나, 스크립트 엔진에 직접 액세스하거나, 스크립트를 삭제하여 언로드할 수 있습니다.
[static]
QString QAxScriptManager::scriptFileFilter()
지원되는 모든 스크립트 언어를 나열하는 파일 필터를 반환합니다. 이 필터 문자열은 QFileDialog 와 함께 사용하면 편리합니다.
QStringList QAxScriptManager::scriptNames() const
모든 스크립트의 이름이 포함된 목록을 반환합니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.