QAxScriptManager Class
QAxScriptManager 클래스는 애플리케이션 객체와 스크립트 코드 간의 연결 고리 역할을 합니다. 더 보기...
| 헤더: | #include <qaxscript.h> |
| 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 Framework도 참조하십시오 .
멤버 함수 문서
[explicit] QAxScriptManager::QAxScriptManager(QObject *parent = nullptr)
QAxScriptManager 객체를 생성합니다. ` 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 라는 스크립트 엔진을 등록하고, 엔진이 발견되면 true를 반환하며, 그렇지 않으면 아무 작업도 수행하지 않고 false를 반환합니다.
이 스크립트 엔진은 지정된 extension 을 사용하여 파일을 로드할 때, 또는 code 이라는 문자열이 포함된 소스 코드를 로드할 때 사용됩니다.
QAxScript *QAxScriptManager::script(const QString &name) const
name 라는 스크립트를 반환합니다.
반환된 포인터를 사용하여 QAxScript::call()를 통해 함수를 직접 호출하거나, 스크립트 엔진에 직접 액세스하거나, 스크립트를 삭제하여 언로드할 수 있습니다.
[static] QString QAxScriptManager::scriptFileFilter()
지원되는 모든 스크립트 언어를 나열한 파일 필터를 반환합니다. 이 필터 문자열은 ` QFileDialog`와 함께 사용하기에 편리합니다.
QStringList QAxScriptManager::scriptNames() const
모든 스크립트의 이름이 포함된 목록을 반환합니다.
© 2026 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.