QML과 JavaScript의 통합
QML 언어는 JSON과 유사한 구문을 사용하며, 다양한 표현식과 메서드를 JavaScript 함수로 정의할 수 있습니다. 또한 사용자가 JavaScript 파일을 임포트하여 해당 임포트가 제공하는 기능을 활용할 수 있게 해줍니다.
이를 통해 개발자와 디자이너는 JavaScript에 대한 지식을 활용하여 사용자 인터페이스와 애플리케이션 로직을 모두 신속하게 개발할 수 있습니다.
JavaScript 표현식
QML은 JavaScript와 깊이 통합되어 있으며, 신호 핸들러와 메서드를 JavaScript로 정의할 수 있습니다. QML의 또 다른 핵심 기능은 속성 바인딩을 사용하여 객체 속성 간의 관계를 지정하고 강제할 수 있는 기능인데, 이 속성 바인딩 역시 JavaScript를 사용하여 정의됩니다.
QML에서 자바스크립트 표현식을 사용하는 방법에 대한 자세한 내용은 ‘QML 문서의 자바스크립트 표현식’이라는 제목의 문서 페이지를 참조하십시오.
JavaScript를 통한 동적 QML 객체 생성
QML은 JavaScript 내에서 객체를 동적으로 생성하는 기능을 지원합니다. 이는 객체의 인스턴스화를 필요한 시점까지 지연시켜 애플리케이션 시작 시간을 단축하는 데 유용합니다. 또한 사용자 입력이나 기타 이벤트에 반응하여 시각적 객체를 동적으로 생성하고 씬에 추가할 수 있게 해줍니다. 이 기능은 크게 두 가지 방식으로 사용할 수 있습니다.
객체 동적 생성을 사용하여 자바스크립트 내에서 명령형 방식으로 객체를 동적으로 생성할 수 있습니다. 예를 들어, QML을 애플리케이션 스크립팅 언어로 사용할 때 이 방법이 유용할 수 있습니다.
참고: 사용자 인터페이스를 생성할때 , 객체를 동적으로 생성하는 데 권장되는 방법은 선언적 구문을 사용하는 것입니다. 이는 QML 엔진 및 툴링과 가장 잘 통합되기 때문입니다. 이 기능을 가능하게 하는 다양한 유형이 존재하며, 예를 들어 ` Loader`, ` Instantiator`, ` Repeater ` 등이 있습니다.
JavaScript 리소스
JavaScript 함수에 정의된 애플리케이션 로직은 JavaScript 리소스라고 하는 별도의 JavaScript 파일로 분리될 수 있습니다. JavaScript 리소스에는 의미 체계가 서로 다른 여러 종류가 있습니다.
QML용 자바스크립트 리소스 정의에 대한 자세한 내용은 ‘QML에서 자바스크립트 리소스 정의(Defining JavaScript Resources In QML )’라는 제목의 문서 페이지를 참조하십시오.
JavaScript 임포트
QML 문서는 자바스크립트 리소스를 임포트할 수 있으며, 자바스크립트 리소스는 다른 자바스크립트 리소스뿐만 아니라 QML 모듈도 임포트할 수 있습니다. 이를 통해 애플리케이션 개발자는 모듈화되고 독립적인 파일 형태로 애플리케이션 로직을 제공할 수 있습니다.
자바스크립트 리소스를 임포트하는 방법과 해당 리소스가 제공하는 기능을 사용하는 방법에 대한 자세한 내용은 ‘자바스크립트 리소스 임포트’라는 제목의 문서 페이지를 참조하십시오.
JavaScript 호스트 환경
QML 엔진은 웹 브라우저에서 제공하는 JavaScript 환경과는 몇 가지 차이점이 있는 JavaScript 환경을 제공합니다. 이 환경에서 실행되는 코드에는 특정 제한 사항이 적용되며, QML 엔진은 루트 컨텍스트에 JavaScript 개발자에게 익숙하지 않을 수 있는 다양한 객체를 제공합니다.
이러한 제한 사항과 확장 기능은 QML 엔진이 제공하는 JavaScript 호스트 환경에 대한 설명에 문서화되어 있습니다.
또한 JavaScript 엔진에서 사용하는 메모리 관리 에 대한 심층적인 설명도 있습니다.
JavaScript 엔진 구성
특정 사용 사례의 경우, 메모리 처리 및 자바스크립트 컴파일을 위해 자바스크립트 엔진이 사용하는 일부 매개변수를 재정의해야 할 수도 있습니다. 이러한 매개변수에 대한 자세한 내용은 자바스크립트 엔진 구성을 참조하십시오.
애플리케이션 스크립트화
Qt Qml 문서 내에서 JavaScript를 사용하는 것 외에도, Qt를 사용하면 C++ 애플리케이션에 JavaScript 엔진을 임베드하여 스크립트 처리가 가능하게 할 수 있습니다. 이를 통해 애플리케이션을 재컴파일하지 않고도 JavaScript를 사용하여 애플리케이션 기능을 확장할 수 있습니다.
QObject 인스턴스를 스크립트에 노출하는 방법 및 보안 고려 사항을 포함하여, C++ 애플리케이션에서 JavaScript 엔진을 사용하는 방법에 대한 자세한 내용은 ‘애플리케이션 스크립트화’를 참조하십시오.
© 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.