Qt 6.6의 새로운 기능
Qt 6.6의 신규 및 복원된 모듈
Qt 6.6에는 다음과 같은 모듈과 도구가 추가되었습니다:
기술 미리보기(Technology Preview)의 신규 및 복원된 모듈
참고: API 및 ABI의 안정성은 보장되지 않습니다.
Qt Graphs 이 모듈
Qt Graphs 은 Qt Data Visualization 을 대체하기 위한 모듈입니다. 이 모듈은 Qt Data Visualization 과 달리 OpenGL 2.1에 의존하지 않고, Qt Quick 3D를 렌더링 엔진으로 사용하여 네이티브 그래픽 백엔드를 지원합니다.
이 모듈은 Qt Data Visualization 의 모든 기능은 아니더라도 대부분의 기능을 제공할 것입니다. 테크놀로지 프리뷰 단계에서는 일부 고급 기능이 미완성일 수 있습니다.
Qt 6.6의 새로운 기능
Qt Core 모듈
- 생성자에 nodiscard를 표시하는 데 적용해야 하는 Q_NODISCARD_CTOR 매크로가 추가되었습니다. 이 매크로는 이를 지원하는 컴파일러에서는
[[nodiscard]]로 변환되며, 그렇지 않은 컴파일러에서는 아무런 동작도 하지 않습니다. - 다음 Qt 컨테이너에 `
assign()` 오버로드가 추가되었습니다: ` QVarLengthArray`, ` QList`, ` QByteArray ` 및 ` QString`. 이 함수들은 기존 `capacity()`를 재사용하면서 새로운 데이터를 할당하는 편리한 방법입니다. - CMakeLists.txt에서 QT_DISCARD_FILE_CONTENTS 소스 파일 속성을 지정하면 리소스 파일 시스템에 추가된 파일의 내용을 생략할 수 있습니다. 파일 노드는 유지됩니다.
.qrc파일을 수동으로 작성할 때는fileXML 노드의empty속성을true로 설정하여 동일한 효과를 얻을 수 있습니다. - QFileInfo readSymLink() 메서드에 원시 경로를 반환하는 새로운 멤버 함수가 추가되었으며, 타임스탬프 관련 함수에는 를 매개변수로 받는 새로운 오버로드가 추가되었습니다. QTimeZone
- QProcess::UnixProcessParameters 구조체와 QProcess::UnixProcessFlag 열거형은 새로운 QProcess::setUnixProcessParameters() 멤버 함수에서 사용되어, 불필요한 파일 설명자를 닫는 등 자식 프로세스의 유닉스 관련 설정 및 매개변수를 수정할 수 있습니다.
- 새로운 QNativeIpcKey 클래스는 QSharedMemory 및 QSystemSemaphore 에서 사용하는 네이티브 키를 보유하여, Apple 플랫폼에서 샌드박스화된 애플리케이션을 더 잘 지원합니다. 자세한 내용은 네이티브 IPC 키를 참조하십시오.
- 시간 범위를 다루는 대부분의 Qt API는
std::chrono의 관련 데이터 유형으로 이식되었습니다. - QXmlStreamReader::hasStandaloneDeclaration()는 문서에 명시적인 독립형 선언이 있는지 여부를 보고합니다.
Qt GRPC 모듈
- QGrpcChannelOptions 및 QGrpcCallOptions 가 추가되었습니다. 이는 채널 및 호출에 옵션을 전달하기 위한 새로운 메서드입니다.
- 호출에 추가 메타데이터를 전달하기 위해 QGrpcMetadata가 추가되었습니다.
- 자동 생성된 QtGRPC 클래스에 대한 QML 유형 지원이 통합되었습니다.
Qt GUI 모듈
- 글꼴의 OpenType 기능에 직접 액세스할 수 있도록 QFont::setFeatures()가 추가되었습니다.
- QPalette 이제 기본적으로 시스템의 강조색을 사용하는 accent() 색상 항목이 있습니다.
- QRhi 클래스 계열은 이제 완전히 문서화되었으며, 제한된 호환성 보장이 적용된 API로 제공됩니다. Qt 렌더링 하드웨어 인터페이스(Qt Rendering Hardware Interface)는 3D 그래픽 API 및 셰이딩 언어 추상화 계층으로, Qt Quick 및 Qt Quick 3D 와 같은 모듈에서 Direct 3D 11/12, Vulkan, Metal, OpenGL 및 OpenGL ES 위에서 작동할 수 있는 크로스 플랫폼의 이식 가능한 렌더링 엔진 및 머티리얼 시스템을 구현하는 데 사용됩니다. 플랫폼에 따라 다를 수 있는 3D API 및 셰이딩 언어에 직접 의존하지 않고 자체적인 저수준 렌더링을 수행하고자 하는 애플리케이션은 이제 QRhi 및 관련 클래스를 사용하여 Qt Quick 장면을 확장하거나, QWindow 로 렌더링하거나, 텍스처로 오프스크린 렌더링을 수행하거나, GPU 컴퓨팅 워크로드를 디스패치할 수 있습니다. 이전 Qt 6 릴리스에서는 QRhi 클래스가 완전히 비공개였으며, 표준 Qt 문서 세트의 일부로 문서가 제공되지 않았습니다. 이제 이 클래스들은 QPA(QPlatform*) 클래스와 유사하게 취급되는데, 이는 이 클래스들이 공개 Qt API가 제공하는 모든 표준 패턴과 소스/바이너리 호환성 보장을 제공하지는 않지만, 중급/고급 수준의 애플리케이션 개발자가 사용할 수 있는 특수한 클래스 집합을 형성함을 의미합니다. QRhi API에 대한 문서는 이제 표준 Qt 문서의 일부가 되었습니다. 또한 rhiwindow 예제가 도입되었습니다.
- QRhi 용 Direct 3D 12 백엔드가 추가되었습니다. 현재로서는 Qt Quick 및 QQuickWidget 의 기본 백엔드 선택이 Windows에서 여전히 Direct 3D 11로 유지되고 있으며, 가까운 미래에도 변경될 예정이 없으므로 이 변경 사항이 어떤 애플리케이션에도 영향을 미치지는 않습니다. 새로운 D3D12 백엔드는 당분간 실험적인 기능으로 간주되어야 하며, 주로 D3D12를 요구하는 애플리케이션 자체의 렌더링 또는 컴퓨팅 엔진, 혹은 외부 구성 요소와의 상호 운용성을 단순화하기 위해 Qt가 Direct 3D 12를 통해 렌더링을 수행하도록 해야 하는 애플리케이션에 유용합니다.
- Qt 6 애플리케이션은 이제 새로운 ` QUtiMimeConverter `(macOS용) 및 ` QWindowsMimeConverter `(Windows용) 클래스를 사용하여 사용자 정의 또는 플랫폼별 클립보드 형식을 지원할 수 있습니다. 이 클래스들은 Qt 5의 `QMacPasteboardMime` 및 `QWindowsMime` 유형을 통합한 버전입니다. 기존 구현을 조정하는 데 도움이 필요하면 이식 가이드를 참조하십시오.
- QTextListFormat::setStart()를 사용하면 텍스트 목록이 1이 아닌 다른 인덱스로 시작하도록 할 수 있습니다.
Qt Location 모듈
- 이제 지구본을 감싸거나 구멍이 있는 항목을 포함하여 지도 항목이 더 정확하게 렌더링됩니다.
- 이제 지도 항목을 서로 다른 참조 표면을 사용하여 렌더링할 수 있습니다. ` QLocation::ReferenceSurface ` 열거형에는 `
Map` 및 `Globe` 옵션이 제공되며, 이 옵션들은 항목 유형의 ` referenceSurface ` 속성과 함께 사용하여 항목이 평면 지도에 렌더링될지, 아니면 지구의 곡률을 따를지 제어할 수 있습니다. - Shift 키를 누른 상태에서 마우스 휠을 돌리면 ‘ bearing ’을 변경할 수 있으며, Control 키를 누른 상태에서 마우스 휠을 돌리면 ‘ tilt ’을 변경할 수 있습니다.
Qt Multimedia 모듈
- Qt Multimedia 라이브러리는 더 이상 오디오 또는 비디오 권한을 요청하지 않고, 해당 권한이 제공되었는지 여부만 확인합니다. 클라이언트 애플리케이션은 C++ 또는 QML 권한 API를 사용하여 권한을 요청해야 합니다.
- 새로운 QWindowCapture 클래스는 QMediaCaptureSession 내에서 개별 데스크톱 애플리케이션 창의 동영상을 캡처하는 기능을 지원합니다. 녹화된 동영상은 QMediaRecorder 이나 QVideoWidget 와 같은 모든 유형의 동영상 출력 장치로 전송될 수 있습니다. 창 캡처는 FFmpeg 백엔드에서만 지원됩니다.
- QMediaRecorder 동영상 품질, 해상도 및 비트레이트를 보다 정밀하게 제어할 수 있는 속성이 추가되었습니다.
Qt PDF 모듈
- 새로운 QPdfLinkModel 클래스는 지정된 페이지의 링크 기하 구조와 대상 위치를 제공합니다.
- QPdfDocument::pageModel()는 Qt::DecorationRole 를 구현하여 필요에 따라 페이지 썸네일을 렌더링합니다.
- 새로운 QPdfPageSelector 클래스는 위젯 기반 PDF 뷰어에서 페이지를 선택하기 위한 특화된 QSpinBox 입니다.
Qt Positioning 모듈
- Qt Positioning 라이브러리는 더 이상 위치 권한을 요청하지 않고, 권한이 제공되었는지 여부만 확인합니다. 클라이언트 애플리케이션은 C++ 또는 QML 권한 API를 사용하여 권한을 요청해야 합니다.
Qt Protobuf 모듈
- *.proto 스키마의 일부로 특정 Qt Core 및 Qt GUI 유형을 사용하여 활성화됩니다.
- 자동 생성된 QProtobufMessage 클래스에 대한 통합 QML 유형 지원.
- 자동 생성된 QProtobufMessage 클래스에 대해 암시적으로 공유되는 데이터로 마이그레이션되었습니다. 이를 통해 많은 복사본을 생성하지 않고도 QML 컨텍스트에서 값 단위로 메시지 유형에 액세스할 수 있습니다.
- google.protobuf.Any 유형에 대한 Qt Protobuf Well-Known Types 지원이 추가되었습니다.
- protobuf의 유니온과 유사한 유형인 oneof에 대한 지원을 통합했습니다. 이 유형은 값을 포함할 필요가 없습니다.
Qt Bluetooth 모듈
- Qt Bluetooth 라이브러리는 더 이상 블루투스 권한을 요청하지 않고, 권한이 부여되었는지 여부만 확인합니다. 클라이언트 애플리케이션은 C++ 또는 QML 권한 API를 사용하여 권한을 요청해야 합니다.
- Qt는 이제 quint128이라는 네이티브 128비트 부호 없는 정수(unsigned int) 유형을 제공합니다. 이를 지원하는 플랫폼에서 QBluetoothUuid(quint128) 생성자와 QBluetoothUuid::toUInt128() 메서드는 이제 이전 Qt 버전에서 사용하던 사용자 정의 구조체 대신 이 유형을 사용합니다. 코드에서 quint128을 불투명(opaque) 유형으로 취급하는 한, 이 변경 사항은 소스 및 바이너리 호환성을 유지하지만, 문제가 발생할 경우 QUuid::Id128Bytes 를 매개변수로 받는 새로운 오버로드를 사용하는 것을 고려하십시오. 128비트 int 유형을 지원하지 않는 플랫폼(예: MSVC)은 여전히 Qt Bluetooth 에 정의된 사용자 정의 구조체를 사용합니다.
Qt Qml 모듈
- Qt Qml Core 모듈을 통해 애플리케이션 권한을 관리하는 기능이 추가되었습니다. Qt Qml 코어 모듈은 크로스 플랫폼 방식으로 권한을 확인하거나 요청하는 데 사용할 수 있는 일련의 권한 유형을 통해 Qt C++ 애플리케이션 권한 기능을 QML에 노출합니다. 자세한 내용은 QML 애플리케이션 권한을 참조하십시오.
- XMLHttpRequest 객체는 최신 브라우저와 더 잘 호환되도록 두 가지 기능이 추가되었습니다. 리디렉션이 발생했는지 확인하는 데 사용할 수 있는 responseURL 속성이 추가되었습니다. 마찬가지로, XMLHttpRequest 객체가 응답의 Content-Type 헤더에 명시된 값이 아닌 특정 MIME 유형을 기준으로 응답을 파싱하도록 하는 데 사용할 수 있는 overrideMimeType() 메서드가 추가되었습니다.
- QML Language Server는 ‘정의로 이동’ 및 ‘사용 위치 찾기’ 기능을 초기 지원하게 되었습니다. 또한 문서 서식 지정 기능을 완벽하게 지원합니다.
- 이제 플러그인을 통해 qmllint를 확장할 수 있습니다. 플러그인 API는 현재 기술 미리보기(tech preview) 단계에 있습니다.
Qt Quick 모듈
- 글꼴의 OpenType 기능에 직접 액세스할 수 있도록 font.features 속성이 추가되었습니다.
- TableView selectionMode 속성을 통해 단일 셀 또는 여러 셀을 선택할 수 있는지 여부를 제어할 수 있습니다.
- TreeView 모델의 하위 트리만 표시하도록 하는 rootIndex 속성이 있습니다.
- AnimatedImage 이제 sourceSize 속성을 지원합니다.
- 환경 변수
QT_QUICK_FLICKABLE_WHEEL_DECELERATION을 사용하면 “클릭감”이 있는 휠 마우스로 스크롤한 후의 감속을 사용자 지정할 수 있습니다. 이제 기본적으로 가속 기능이 비활성화되어 스크롤 거리가 “클릭” 횟수에 비례합니다(플랫폼에서 자체 가속 기능을 제공하는 경우는 제외). 하지만 15000보다 작은 값을 설정하면 이전 동작으로 복원할 수 있습니다. flickDeceleration 속성은 이제 터치 플릭에만 적용됩니다. - 대부분의 속성은 이제 FINAL로 지정되어, 동일한 이름의 새 속성을 선언하여 더 이상 가릴 수 없습니다.
FINAL속성이 가려지면 경고가 표시됩니다. 예상치 못한 동작 변화를 방지하기 위해 해당 속성의 이름을 변경할 것을 권장합니다. - QQuickWindow, QQuickRenderControl 및 QSGTexture 에 여러 QRhi 관련 함수를 추가하고 노출했습니다. 온스크린 또는 오프스크린 Qt Quick 렌더링에 사용되는 QRhi, QRhiSwapChain 또는 QRhiCommandBuffer 을 조회하는 과정이 간소화되었습니다. 이전에는 QRhi* 클래스에 의존한다는 이유로 문서에서 숨겨져 있던 일부 함수가 이제 노출되었습니다. QQuickWindow 에 createTextureFromImage()의 대응 함수인 createTextureFromRhiTexture()를 추가했습니다.
- 씬그래프 예제를 업데이트했습니다: rhiunderqml을 추가하고, 구식이며 OpenGL 전용이었던 fboitem 예제를 새로운 이식성 높은 rhitextureitem 예제로 대체했으며, customrendernode 예제도 업데이트했습니다. 이 모든 변경 사항은 사용자 정의 저수준 2D/3D 렌더링을 통해 Qt Quick 장면을 확장하는 세 가지 방법(언더레이/오버레이, 텍스처 렌더링을 기반으로 하는 사용자 정의 아이템, QSGRenderNode 을 사용하는 사용자 정의 아이템)을 보여줍니다.
- 렌더링 전에 경로를 자동으로 단순화하기 위해 Path::simplified 속성을 추가했습니다. 이는 QPainterPath::simplified() 함수를 반영한 것입니다.
- QQuickWindow 의 렌더링에 대한 GPU 타임스탬프 수집 기능이 추가되었습니다. QQuickGraphicsConfiguration 의 setTimestamps() 또는 해당 환경 변수를 통해 이 기능이 활성화되면,
qt.scenegraph.time.renderloop와 같은 로깅 범주를 활성화했을 때 출력되는 디버그 출력 및 Qt Quick 3D 의 DebugView 항목에 GPU 측 타이밍 정보가 표시되어 CPU 측 타이밍 정보를 보완합니다. 현재 이 기능은 Direct 3D 11, Metal 및 Vulkan에서 지원됩니다(기본 Vulkan 구현체가 타임스탬프 쿼리를 지원하는 경우). 나머지 3D API에 대한 지원은 향후 릴리스에서 도입될 예정입니다.
Qt Quick Controls 모듈
- SpinBox 에 live 속성을 추가했습니다. 이 속성은 사용자가 displayText 을 편집할 때 value 이 업데이트되는지 여부를 제어합니다.
- Dial에 wrapped 신호를 추가했습니다. 이 신호는 다이얼이 최대값을 넘어 최소값으로, 또는 그 반대로 돌아갈 때 발생합니다.
- Dial에 startAngle 및 endAngle 속성이 추가되었습니다. 이 속성들은 다이얼의 시작 및 종료 각도를 도(degree) 단위로 제어합니다.
Qt Quick Layouts 모듈
- 반응형 레이아웃을 작성하기 위한 헬퍼 항목인 ` LayoutItemProxy`을 추가했습니다(기술 미리보기).
- 각 레이아웃 유형에 적용 가능한 uniformCellSizes, uniformCellSizes, uniformCellWidths 및 uniformCellHeights 속성이 추가되었습니다(기술 미리 보기).
- StackLayout 이제 현재 인덱스 이하 인덱스에 항목이 삽입되거나 제거될 경우 currentIndex 를 업데이트합니다.
Qt Quick Shapes 모듈
- 실험적인 곡선 렌더링 백엔드가 추가되었습니다. 이 백엔드는 기본 지오메트리 렌더러보다 더 높은 품질로 곡선을 렌더링하며, MSAA를 사용하지 않고도 앤티앨리어싱을 적용합니다. Shape::preferredRendererType 속성을 사용하여 선택할 수 있습니다.
Qt Quick 3D 모듈
- TextureData 를 절차적으로 생성하기 위한 QML API인 ` ProceduralTextureData`가 추가되었습니다. 이전에는 ` QQuick3DTextureData`를 상속하는 C++ 방식을 통해서만 가능했습니다.
- ProceduralMesh 라는 이름의 메쉬 지오메트리를 절차적으로 생성하기 위한 QML API가 추가되었습니다. 이전에는 QQuick3DGeometry 를 서브클래싱하여 C++를 통해서만 가능했습니다.
- 이제 PLY 파일을 가져올 수 있습니다.
- QQuick3DTextureData 를 사용하여 3D 텍스처를 생성하는 기능이 추가되었습니다.
- Renderer Extensions에 대한 초기 지원이 추가되었습니다. 이는 추가 패스를 추가하고 내장 렌더 패스를 사용자 정의할 수 있도록 하는 첫 단계입니다. ` View3D `에는 ` QQuick3DRenderExtension `의 서브클래스 배열을 받는 `extensions`라는 새로운 속성이 있습니다. 이는 ` QQuick3DExtensionHelpers`의 헬퍼 함수를 사용하여 추가로 지원됩니다.
Qt SQL 모듈
- Mimer SQL용 플러그인이 추가되었습니다.
- MySQL/MariaDB에 MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_TLS_VERSION, MYSQL_OPT_SSL_MODE라는 새로운 연결 옵션이 추가되었습니다
- ODBC 플러그인은 이제 모든 네이티브 오류 코드를 QSqlError
- QSqlQuery 두 가지 새로운 함수인 boundValueName()/boundValueNames()가 추가되었습니다
Qt TextToSpeech 모듈
QTextToSpeech 클래스에 모든 엔진에서 사용할 수 있는 몇 가지 기능이 추가되었습니다.
- 애플리케이션은 enqueue 를 통해 합성 엔진에 여러 텍스트 청크를 추가할 수 있습니다.
- 새로운 aboutToSynthesize 신호는 텍스트 청크가 합성되기 직전에 발송됩니다.
- 이제 findVoices 멤버 함수를 사용하여 일련의 기준에 따라 엔진이 제공하는 음성 중 하나를 쉽게 선택할 수 있습니다. 또한 QML 코드에서는 VoiceSelector 유형을 부착 속성으로 사용할 수 있습니다.
모든 엔진에서 새로운 기능을 모두 사용할 수 있는 것은 아닙니다. 애플리케이션은 새로운 ` Capabilities ` 플래그와 ` engineCapabilities ` 속성을 사용하여 현재 사용 중인 엔진이 다음의 새로운 기능 중 어떤 것을 지원하는지 확인할 수 있습니다:
- 엔진이 Synthesize 기능을 지원하는 경우, QTextToSpeech 은 이제 텍스트를 PCM 데이터로 합성할 수 있습니다. synthesize 함수는 합성이 완료된 PCM 데이터 청크를 수신하는 호출 가능 객체와 함께 사용할 수 있습니다.
- 엔진에 WordByWordProgress 기능이 있는 경우, QTextToSpeech 은 현재 텍스트 청크의 각 단어가 발음될 때마다 sayingWord 신호를 출력합니다.
Qt WebEngine 모듈
- QWebEngineLoadingInfo 에 응답 헤더가 추가되었습니다.
- QWebEngineUrlRequestJob 에서 추가 응답 헤더를 추가할 수 있게 되었습니다.
- 사용자 정의 URL 체계에 대해 HTML5 Fetch API를 활성화하는 QWebEngineUrlScheme::FetchApiAllowed 플래그가 추가되었습니다.
- qWebEngineGetDomainAndRegistry() 함수를 추가하여 Chromium/QtWebEngine 이 인식하는 유효한 최상위 도메인을 읽을 수 있게 되었습니다.
- 지문 인식에 대한 추가적인 보호를 위해 캔버스 읽기를 비활성화하는 QWebEngineSettings::DisableReadingFromCanvas 설정을 추가했습니다.
Qt Widgets 모듈
- QWidget 에 초기화자 목록을 받는 새로운 setTabOrder() 오버로드가 추가되어, 단일 호출로 전체 체인을 설정할 수 있게 되었습니다.
- QMessageBox::Option 는 각 메시지 상자에 대해 네이티브 메시지 상자를 사용할지 여부를 제어하는 기능을 제공합니다.
플랫폼 변경 사항
데스크톱 플랫폼
macOS
- 이제 사용자 프로젝트 또는 macOS용 Qt 자체를 빌드하려면 최소 CMake 버전 3.21.1이 필요합니다.
- QMessageBox::setCheckBox()는 이제 네이티브 메시지 상자를 사용할 때 반영됩니다.
- QFileDialog 더 이상 불필요한 권한 대화 상자를 표시하지 않습니다.
모바일 플랫폼
Android
- QDesktopServices::openUrl()을 사용할 때 FileProvider 지원이 추가되었습니다.
- 기본적으로 AndroidX가 추가되었습니다(FileProvider의 종속성).
- Android 전용 타깃 속성을 위한 QTP0002 CMake 정책이 도입되었습니다.
- Android에서 지원되는 예제 목록을 업데이트했습니다.
- 지원되는 최대 버전은 Android 13입니다.
- Gradle을 버전 8.3.0으로 업데이트했습니다.
- QFileDialog 선택된 필터뿐만 아니라 제공된 모든 이름 필터를 적용합니다.
- 2023년 Play 스토어 요구 사항에 맞춰 Android 타겟 SDK 레벨을 33으로 업데이트했습니다.
iOS
- QWindow::setMask()에 대한 지원을 추가하여 렌더링 및 입력을 마스킹할 수 있게 되었습니다.
- QWindows에 UIView를 삽입할 수 있도록 외부 창에 대한 지원이 추가되었습니다.
임베디드 플랫폼
Boot to Qt
- Yocto 4.2(mickledore)에 대한 지원이 추가되었습니다.
- 대상 하드웨어에 대한 지원 수준이 새로 지원되는 보드를 반영하여 업데이트되었습니다:
- NXP i.MX 93 보드에 대한 Tier 1 지원이 추가되었습니다.
- Jetson AGX Xavier 보드에 대한 Tier 1 지원이 추가되었습니다.
- NXP i.MX 8QuadXPlus 보드에 대한 Tier 3 지원이 추가되었습니다.
- Toradex Apalis iMX8 보드에 대한 3단계 지원이 추가되었습니다.
- Toradex 및 ST 타겟이 이제 최신 Yocto LTS 버전(kirkstone)을 사용합니다.
© 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.