플랫폼 통합
애플리케이션 개발을 위한 크로스 플랫폼 툴킷으로서 Qt의 가장 큰 강점은 각 대상 플랫폼마다 애플리케이션 코드를 복제할 필요가 없다는 점입니다.
Qt는 애플리케이션 작성의 많은 일반적인 작업을 해결하지만, Qt로 해결할 수 없거나 플랫폼별 API 또는 다른 툴킷 위에 기능을 구축하는 것이 더 합리적일 수 있는 코너 케이스가 항상 존재합니다.
이러한 사용 사례를 지원하기 위해 Qt는 애플리케이션 로직의 대부분을 처리하면서도 간단한 타입 변환부터 플랫폼별 네이티브 인터페이스에 이르기까지 광범위한 플랫폼 통합 API를 제공합니다.
타입 변환
QString, QPoint, QImage 와 같은 Qt의 기본 데이터 유형 중 다수는 네이티브 동급 유형과의 변환을 제공합니다.
예를 들어, Apple 플랫폼에서 현재 사용자의 사용자 이름을 가져옵니다:
NSProcessInfo *processInfo = NSProcessInfo.processInfo; QString userName = QString::fromNSString(processInfo.userName)
모든 타입 변환의 전체 목록은 타입 변환 개요를 참조하세요.
창 임베딩
기본 플랫폼 API로 생성된 윈도우는 Qt 윈도우의 부모 컨테이너로 사용하거나 Qt 윈도우에 자식 윈도우로 임베드할 수 있습니다.
전자는 애플리케이션이 주로 네이티브 플랫폼 API를 사용하여 작성되었지만 애플리케이션의 일부에서 특수한 UI를 그리는 등 Qt를 사용하는 경우에 유용합니다. 네이티브 애플리케이션의 창 계층 구조에 Qt를 포함하려면 QWindow::winId()를 사용하여 Qt 창의 네이티브 핸들을 가져온 다음, 네이티브 API를 사용하여 창을 네이티브 UI로 다시 부모로 지정합니다.
후자는 네이티브 플랫폼이나 다른 툴킷이 특수한 컨트롤을 네이티브 창으로 노출하는 경우에 유용합니다. QWindow::fromWinId ()를 사용하여 네이티브 창 핸들을 QWindow 으로 감싸면 창을 다른 QWindow 과 같이 Qt 창 계층 구조로 다시 부모를 지정할 수 있습니다. 이 QWindow 을 Qt Widgets 기반 UI로 다시 부모로 지정하려면 위젯 전용 QWidget::createWindowContainer() 함수를 사용합니다.
이벤트 처리
Qt의 대부분의 이벤트 처리 사용 사례는 QWindow::event() 및 친구 또는 QObject::installEventFilter()를 통한 크로스 플랫폼 이벤트 전달로 충분히 다룰 수 있습니다.
이것으로 충분하지 않은 경우, Qt는 네이티브 이벤트 전달에 대한 액세스를 제공합니다. 모든 네이티브 이벤트를 수신하는 글로벌 이벤트 필터는 QCoreApplication::installNativeEventFilter()를 사용하여 설치할 수 있으며, 창별 네이티브 이벤트는 QWindow::nativeEvent()에서 처리할 수 있습니다.
참고: 네이티브 이벤트 흐름을 방해하면 Qt가 일관성 없는 상태가 될 수 있습니다. 이러한 API는 주로 Qt가 아직 처리하지 않는 이벤트와 같이 Qt의 기존 이벤트 처리를 보강하는 데 사용해야 합니다.
네이티브 인터페이스
위에서 언급한 API에서 다루지 않는 플랫폼별 기능은 Qt의 보다 일반적인 네이티브 인터페이스 메커니즘으로 처리됩니다. 이 인터페이스는 확장하는 클래스의 네이티브 또는 플랫폼별 API에 대한 액세스를 제공합니다.
인터페이스는 QNativeInterface 네임스페이스에 있으며, 기본 네이티브 핸들에 액세스하거나 기존 네이티브 핸들을 채택하거나 플랫폼별 API를 제공하는 등의 사용 사례를 다룹니다.
예를 들어, macOS에서 QNativeInterface::QCocoaGLContext 네이티브 인터페이스를 통해 QOpenGLContext 의 기본 NSOpenGLContext에 액세스합니다:
using namespace QNativeInterface; if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>()) [cocoaGLContext->nativeContext() makeCurrentContext];
모든 네이티브 인터페이스의 전체 목록은 네이티브 인터페이스 개요를 참조하세요.
경고: 네이티브 인터페이스 API에는 소스 또는 바이너리 호환성이 보장되지 않으므로, 이러한 인터페이스를 사용하는 애플리케이션은 해당 애플리케이션이 개발된 Qt 버전에서만 작동이 보장됩니다.
플랫폼 지원
애플리케이션 개발자 API 외에도 Qt는 크로스 플랫폼 빌딩 블록의 기본 구현을 Qt에서 제공할 때 플랫폼과 인터페이스합니다.
예를 들어, 이벤트 디스패처 추상화와 Qt Core 의 이벤트 디스패처 추상화와 RHI의 렌더링 하드웨어 추상화를 예로 들 수 있습니다.
여기서 주요 추상화 계층은 윈도우 시스템 통합 및 관련 사용 사례를 다루는 Qt 플랫폼 추상화 또는 줄여서 QPA입니다.
© 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.