Qt 언어
Qt API는 C++로 구현되어 있으며, 크로스 플랫폼 개발을 용이하게 하는 추가 기능을 제공합니다. Qt는 JavaScript 위에 구축된 자체 선언적 언어인 QML과 QML 위에 구축된 프레임워크인 Qt Quick 를 지원합니다. 이는 프로그램의 사용자 인터페이스, 즉 프로그램의 모양과 동작 방식을 설명하도록 설계되었습니다. C++ 사용의 대안으로, Qt에 대한 바인딩은 Python의 경우 Qt for Python.
C++
Qt 프레임워크에는 매우 직관적이고 모듈화된 C++ 라이브러리 클래스의 포괄적인 세트가 포함되어 있으며 애플리케이션 개발을 간소화하기 위한 API가 로드되어 있습니다. Qt는 C++ 개발을 위한 풍부한 애플리케이션 빌드 블록 세트와 함께 직관적인 C++ 클래스 라이브러리를 제공하며 C++에 다음과 같은 기능을 추가합니다:
- 시그널과 슬롯이라는 원활한 객체 통신을 위한 강력한 메커니즘
- 쿼리 및 설계 가능한 오브젝트 속성
- 강력한 이벤트 및 이벤트 필터
- 국제화를 위한 컨텍스트 문자열 번역
- 정교한 간격 기반 타이머로 이벤트 중심 GUI에서 많은 작업을 우아하게 통합할 수 있습니다.
- 객체 소유권을 자연스럽게 구성하는 계층적이고 쿼리 가능한 객체 트리
- 라이브러리 경계를 넘어 작동하는 동적 캐스트
- 사용자 정의 유형을 Qt 메타타입 시스템에 통합 지원
QML
Qt Qml 은 QML 언어로 애플리케이션과 라이브러리를 개발하기 위한 프레임워크를 제공합니다. 언어와 엔진 인프라를 정의 및 구현하고, 커스텀 타입으로 QML 언어를 활성화 및 확장하고 QML 코드를 JavaScript 및 C++와 통합할 수 있는 API를 제공합니다. Qt QML 모듈은 QML API 와 C++ API 를 모두 제공합니다.
모듈은 Qt Qml 모듈은 QML 애플리케이션을 위한 언어와 인프라를 제공합니다. 모듈은 Qt Quick 모듈은 사용자 인터페이스 구축을 위한 다양한 시각적 컴포넌트, 모델 뷰 지원, 애니메이션 프레임워크 등을 제공합니다.
QML 언어를 사용하면 JSON과 유사한 구문으로 객체 트리를 정의할 수 있습니다. 또한 자바스크립트로 로직을 구현할 수 있습니다.
QML 애플리케이션용 JavaScript
JavaScript 표현식을 사용하면 QML 코드에 애플리케이션 로직을 포함할 수 있습니다. Qt Qml은 QML과 C++에서 JavaScript 표현식을 실행하기 위한 프레임워크를 제공합니다. 다음을 지원합니다:
- 사용자 인터페이스와 애플리케이션 로직의 빠른 개발.
- 표준 7판에 명시된 대로 유효한 JavaScript와 이후 표준의 일부 확장을 실행할 수 있는 QML에서 제공하는 JavaScript 호스트 환경.
- 자바스크립트 내에서 객체를 동적으로 생성하는 기능. 이는 필요할 때까지 객체의 인스턴스화를 지연시켜 애플리케이션 시작 시간을 개선하는 데 유용합니다.
Qt for Python
Qt for Python 는 Qt용 공식 Python 바인딩을 제공하므로 Python을 사용하여 Qt 애플리케이션을 작성할 수 있습니다. 이 프로젝트에는 다음과 같은 구성 요소가 있습니다:
- PySide6: Qt 6용 공식 Python 바인딩입니다.
- Shiboken6: C++ 코드를 Python에 노출하기 위한 바인딩 생성기 도구
- 툴링: PySide6로 애플리케이션 개발을 더 쉽게 하기 위한 도구
- 시보켄 모듈: 디버깅을 위한 유틸리티 함수 제공
관련 콘텐츠
© 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.