이 페이지에서

플랫폼 통합

애플리케이션 개발을 위한 크로스 플랫폼 툴킷으로서 Qt의 주요 강점은 각 대상 플랫폼마다 애플리케이션 코드를 중복하여 작성할 필요가 없다는 점입니다.

Qt는 애플리케이션 작성의 일반적인 작업 대부분을 해결해 주지만, Qt가 처리할 수 없는 특수한 경우가 항상 존재하거나, 플랫폼별 API나 다른 툴킷을 기반으로 기능을 구축하는 것이 더 합리적인 경우도 있습니다.

이러한 사용 사례를 지원하면서도 Qt가 애플리케이션 로직의 대부분을 처리할 수 있도록, Qt는 간단한 유형 변환부터 플랫폼별 네이티브 인터페이스에 이르기까지 광범위한 플랫폼 통합 API를 제공합니다.

형 변환

QString, QPoint, QImage 와 같은 Qt의 기본 데이터 유형 중 다수는 네이티브에 상응하는 유형과의 변환 기능을 제공합니다.

예를 들어, Apple 플랫폼에서 현재 사용자의 사용자 이름을 가져오려면:

NSProcessInfo *processInfo = NSProcessInfo.processInfo;
QString userName = QString::fromNSString(processInfo.userName)

모든 유형 변환에 대한 전체 목록은 유형 변환 개요를 참조하십시오.

다른 UI 툴킷과의 통합

Qt는 애플리케이션 개발 요구 사항의 대부분을 포괄하는 포괄적인 크로스 플랫폼 UI 컴포넌트 및 컨트롤 세트를 제공합니다. 그러나 Qt를 다른 UI 툴킷과 통합해야 하거나 통합하는 것이 유익한 상황이 있습니다.

한 가지 시나리오는 다른 툴킷으로 구축된 애플리케이션에 Qt UI를 임베딩하는 것으로, 예를 들어 기존 애플리케이션을 위한 플러그인을 구현하거나 기존 코드베이스에 Qt를 점진적으로 도입할 때입니다.

또 다른 시나리오는 Qt 애플리케이션 내에서 네이티브 또는 타사 UI 요소를 호스팅하는 것으로, 예를 들어 Qt에서 제공하지 않는 특수한 컨트롤에 접근해야 할 때입니다.

Qt가 이 두 가지 사용 사례를 어떻게 지원하는지에 대한 자세한 내용은 ‘Qt와 다른 UI 툴킷의 혼합’을 참조하십시오.

이벤트 처리

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 내의 크로스 플랫폼 빌딩 블록에 대한 기본 구현을 제공할 때 플랫폼과 연동합니다.

예를 들면 RHI의 이벤트 디스패처 추상화와 Qt Core 및 RHI의 렌더링 하드웨어 추상화가 그 예입니다.

여기서 주요 추상화 계층은 Qt 플랫폼 추상화(Qt Platform Abstraction, 줄여서 QPA)로, 창 시스템 통합 및 관련 사용 사례를 처리합니다.

© 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.