Qt 6.8의 새로운 기능
Qt 6.8의 신규 및 복원된 모듈
Qt 6.8에는 다음과 같은 모듈과 도구가 추가되었습니다:
- SVG 문서에서 QML 코드를 생성하는 데 사용되는 svgtoqml 도구가 이제 기술 미리보기 단계를 마쳤습니다. 이 도구는
SVG Tiny 1.2프로파일의 정적 하위 집합을 지원합니다. - 이 Qt Graphs, Qt HTTP Server, Qt Protobuf, 및 Qt GRPC 모듈은 모두 기술 미리보기 단계에서 정식 출시되었습니다.
- xml-ph-0000@deepl.internal 장면에서 SVG 문서를 확장 가능한 벡터 그래픽으로 표시하기 위한 Qt Quick Vector ImageQt Quick 장면에서 SVG 문서를 확장 가능한 벡터 그래픽으로 표시하는 모듈이 추가되었습니다.
Qt 6.8에서 제거된 모듈
다음 모듈은 더 이상 사용되지 않습니다. 새로운 코드에서는 이 모듈을 사용하지 않는 것이 좋습니다.
Qt 3D 모듈
이 Qt 3D 모듈은 더 이상 사용되지 않습니다. Qt 3D 는 라이선스가 부여된 소프트웨어의 일부로 남아 있으며, Qt 프로젝트의 일부로도 유지됩니다. 이 모듈은 향후 릴리스에서도 다른 모듈과 계속 통합될 예정입니다. 중대한 버그 및 보안 취약점은 KDAB의 모듈 관리자가 해결할 예정입니다. 새로운 기능 및 성능과 관련하여 사용자는 info@kdab.com으로 이메일을 보내 KDAB에 문의해야 합니다.
Qt 6.8의 새로운 기능
Qt Core Module
- QChronoTimer 모듈은 전체적으로 std::chrono 지속 시간을 사용하는 QTimer 를 대체합니다.
- QTimer::id()는 Qt::TimerId 를 반환하며, 이는 int 타이머 ID를 받는 다양한 메서드의 새로운 오버로드에서 int 타이머 ID를 대체하기 위해 도입 및 채택되었습니다.
- QAbstractEventDispatcher 에서 정수 나노초 매개변수를 대체하기 위한 std::chrono 기간에 대한 지원이 확대되었습니다.
- QString, QByteArray 및 QList 에 resizeForOverwrite()가 추가되었습니다.
- QString, QByteArray 에
*this = sliced()와 동등한 slice()가 추가되었습니다. - QString, QByteArray, QList, QVarLengthArray 에는 표준 템플릿 라이브러리(STL)와의 호환성을 위해 max_size()가 추가되었습니다.
- QList 콘텐츠 유형이 허용하는 경우, 지정된 크기까지 초기화되지 않은 항목으로의 생성자를 지원합니다.
- QVarLengthArray::PreallocatedSize는 Prealloc 매개변수를 나타냅니다.
- QLatin1StringMatcher::indexIn()는 이제 ` QStringView`를 받을 수 있습니다.
- QCollatorSortKey 이제 이동 생성자를 지원합니다.
- QStringEncoder QStringDecoder 는 이제 인코딩 이름을 로 받을 수 있습니다. QString
- QThread isMainThread() 및 ()이 추가되었습니다. isCurrentThread
- QThreadPool::waitForDone()는 이제 int 밀리초 대신 QDeadlineTimer 를 받아들입니다.
- QDirListing 디렉터리 항목에 대해 STL 스타일의 반복 처리를 제공합니다.
- QVersionNumber 이제 ` QSpan`로 생성할 수 있으며, 반복 처리가 가능합니다.
- qHash()는 이제 quint128 및 qint128을 허용합니다.
- QMap::qHash()는 키의 해시 값을 반환합니다.
- QHash 이제 키와 동일한 값에 대해 동등한 해시 결과를 갖는 것으로 표시된 경우, 키와 다른 유형을 해시할 수 있습니다(C++20 전용). 이는 QString/QStringView 및 QByteArray/QByteArrayView 쌍에서 작동합니다. ARM 프로세서를 제외한 모든 시스템에서 QLatin1StringView 도 QString 및 QStringView 해시에 참여합니다.
- QPointF, QLineF, QRectF 및 QMarginsF 는 이제 퍼지 비교 및 null 검사를 지원합니다.
- QT_ENABLE_STRICT_MODE_UP_TO를 정의하면 다양한 API를 비활성화할 수 있으며, 해당 API가 어느 버전부터 제외되는지는 문서에 명시되어 있습니다.
- QT_NO_QASCONST를 정의하여 qAsConst()를 비활성화하십시오.
- QT_(NO_)USE_NODISCARD_FILE_OPEN을 정의하여 I/O 클래스의
open()메서드에 대한 `[[nodiscard]]` 동작을 제어할 수 있습니다. - QLibraryInfo::paths()는 모든 관련 경로를 반환합니다.
- QCryptographicHash 및 QMessageAuthenticationCode 에는 제공된 버퍼에 데이터의 해시를 계산하는 hashInto()이 추가됩니다.
- 이제
operator<()을 지원하는 더 많은 QtCore 유형은 C++20으로 컴파일될 때operator<=>()을 지원하며(C++17의 경우compareThreeWay()도 지원), 이러한 유형은 이제 6가지 비교 연산자 모두를 (숨겨진 프렌드로서) 일관되게 지원하며, 이전에 지원했던 각 혼합 유형 비교의 역연산도 지원합니다. Qt 6.8에서는 다음 유형에 적용됩니다:- qfloat16
- QAnyStringView
- QByteArray
- QByteArrayView
- QCborArray
- QCborMap
- QCborValue
- QChar
- QDate
- QDateTime
- QDeadlineTimer
- QElapsedTimer
- QLatin1Char
- QLatin1StringView
- QModelIndex
- QOperatingSystemVersion
- QPersistentModelIndex
- QString
- QStringView
- QTime
- QTypeRevision
- QUrl
- QUtf8StringView
- QUuid
- QVersionNumber
- JNI 시그니처를 사용하여 Java 타입을 선언하는 매크로를 포함하는 QtJniTypes 네임스페이스가 기술 미리보기 단계에서 정식 버전으로 전환되었으며, 관련 문서가 제공됩니다.
- QJniObject 및 QJniEnvironment API의 가변 인자 템플릿 버전은 더 이상 예비 단계가 아니며, 문서가 완전히 제공됩니다.
- 새로운 QJniArray 템플릿 클래스를 사용하면 C++ 코드에서 Java 배열을 쉽게 다룰 수 있습니다.
Qt Graphs Module
- Qt Graphs 이 기술 미리보기 단계에서 정식 단계로 승격되었습니다.
- 이 모듈은 두 개의 하위 모듈, Qt Graphs Qt Graphs 위젯으로 나 뉘어, 순수 QML 애플리케이션에 위젯을 포함해야 하는 요구 사항이 제거되었습니다.
- 2D 및 3D 그래프에 대한 통합 테마. GraphsTheme 를 참조하십시오.
- Qt Charts 및 Qt DataVisualization의 마이그레이션 가이드를 참조하십시오.
Qt Graphs3D
- Bars3D 및 Scatter3D 에 투명도 지원이 추가되었습니다.
- Scene3D.primarySubViewport 및 Scene3D.secondarySubViewport 에 대한 지원이 추가되었습니다.
- 그래프 제목의 위치 오프셋을 지원합니다. Abstract3DAxis.titleOffset 을 참조하십시오.
- 라벨 여백을 지원하도록 추가되었습니다. GraphsItem3D.labelMargin 를 참조하십시오.
- 셰이더를 사용하여 격자를 렌더링하고 격자선 너비를 변경하는 기능이 추가되었습니다. GraphsItem3D.gridLineType 및 graphsline.mainWidth 를 참조하십시오.
Qt Graphs2D
- AreaSeries 에 대한 지원이 추가되었습니다.
- QML 컴포넌트를 사용한 사용자 정의 막대 차트에 대한 지원이 추가되었습니다. BarSeries.barDelegate 를 참조하십시오.
- Stacked 및 StackedPercent 막대 차트에 대한 지원이 추가되었습니다. BarSeries.barsType 를 참조하십시오.
- 막대 그래프 레이블에 대한 지원이 추가되었습니다. BarSeries.labelsVisible 를 참조하십시오.
- 다양한 시리즈에 대한 모델 매퍼 지원이 추가되었습니다. XYModelMapper, BarModelMapper 및 PieModelMapper 를 참조하십시오.
- 모든 시리즈에 대해 LegendData 지원을 추가했습니다.
- 동적 스플라인 시리즈에 대한 지원을 추가했습니다.
- 축 제목에 대한 지원이 추가되었습니다. AbstractAxis.titleText 를 참조하십시오.
Qt GRPC 모듈
- Qt GRPC 모듈이 기술 미리 보기 단계에서 정식 출시되었습니다.
- GrpcQuick 모듈에 스트리밍 지원이 추가되었습니다.
- QGrpcInterceptor, QGrpcInterceptorManager 및 QGrpcInterceptorContinuation이 제거되었습니다.
- QGrpcClientStream 와 QGrpcBidirStream에
writesDone()메서드를 추가하여 클라이언트 측에서 스트림을 부분적으로 닫을 수 있게 되었습니다.
Qt GUI 모듈
- QStyleHints::colorScheme 에는 이제 애플리케이션이 명시적인 Dark 또는 Light 구성으로 시스템 설정을 재정의할 수 있게 해주는 세터 함수가 있습니다.
- QFont::ContextFontMerging 가 추가되어, 대체 글꼴을 선택할 때 전체 문자열을 고려하는 새로운 글꼴 병합 알고리즘을 활성화할 수 있습니다. 이로 인해 약간의 비용이 추가될 수 있지만, 특정 경우에는 더 나은 결과를 얻을 수 있습니다.
- QFont::PreferTypoLineMetrics 스타일 전략이 추가되었습니다. 이 전략을 설정하면, 폰트에 USE_TYPO_METRICS 플래그가 수동으로 설정되어 있지 않더라도 OpenType 폰트의 타이포그래피 라인 메트릭을 항상 우선적으로 사용할 수 있습니다.
- iOS와 유사하게, macOS용 QDesktopServices 사용자 지정 및 https URL 스키마 지원이 추가되었습니다.
- QImage::Format_CMYK8888 32비트 CMYK 이미지 형식이 추가되었습니다.
- QColorSpace 그레이스케일 및 CMYK 색 공간에 대한 명시적 지원과 함께 ICC A2B 색 공간 처리 지원이 추가되었습니다.
- QColorSpace::Bt2020, QColorSpace::Bt2100Pq 및 QColorSpace::Bt2100Hlg HDR 색상 공간에 대한 지원이 추가되었습니다.
- QColorSpace::transformModel()는 기본 처리 모델을 반환합니다.
- QColorSpace::colorModel()는 색 공간이 어떤 색상 모델을 위해 만들어졌는지 반환합니다.
- QImage::colorTransformed() 및 QImage::applyColorTransform()의 세 가지 인자를 갖는 변형이 추가되어 이미지 형식과 색 공간을 동시에 변환할 수 있게 되었습니다.
- QStyleHints::contextMenuTrigger 는 쓰기 가능한 속성으로, 애플리케이션이 버튼 누르기 또는 놓기를 통해 컨텍스트 메뉴를 열지 여부를 제어할 수 있게 해줍니다.
- Qt 접근성 인터페이스는 이제 attributes 를 키/값 쌍으로 클라이언트에 보고하는 기능을 지원할 수 있습니다.
- QAccessibleAnnouncementEvent 애플리케이션은 보조 기술에 메시지 안내를 요청하기 위해 이 예외를 발생시킬 수 있습니다.
- QPageLayout::setMargins 이제 선택적 OutOfBoundsPolicy 매개 변수를 사용하여 범위를 벗어난 여백을 거부할지 또는 클램프할지 여부를 지정할 수 있습니다.
- QPdfWriter 펜/채우기에 대한 CMYK 지원이 추가되었습니다.
- QFontDatabase 특정 스크립트에 대해 기본 대체 글꼴 패밀리를 재정의할 수 있는 ` addApplicationFallbackFontFamily `가 추가되었습니다.
- QRhi 에서 멀티뷰 렌더링 지원이 완료되었습니다. 이제 Vulkan 1.2가 필요하지 않고 Vulkan 1.1 구현에서도 멀티뷰가 지원됩니다. 이는 특히 Meta Quest 3와 같은 Android 기반 기기에서 중요합니다.
- QRhi 에서, 이를 지원할 수 있는 플랫폼 및 API에서 멀티샘플 깊이(depth/stencil) 렌더링을 비멀티샘플 깊이(depth/stencil) 텍스처로 자동 변환하는 기능이 도입되었습니다. 자세한 내용은 QRhiTextureRenderTargetDescription::setDepthResolveTexture() 및 QRhi::ResolveDepthStencil 을 참조하십시오.
Qt Multimedia 모듈
- QMediaCaptureSession 를 통해 QMediaRecorder 로 사용자 정의 미디어 데이터를 전송할 수 있는 QVideoFrameInput 및 QAudioBufferInput 클래스가 추가되었습니다.
- QAudioBufferOutput 클래스를 추가하여, QMediaPlayer 에서 디코딩된 오디오 데이터를 수신할 수 있게 되었습니다.
- QAbstractVideoBuffer 클래스를 추가하여, 사용자 정의 비디오 데이터로 QVideoFrame 인스턴스를 생성할 수 있게 되었습니다.
- QMediaRecorder QIODevice 에 미디어 출력을 기록할 수 있습니다.
- XDG Desktop Portal을 통해 ScreenCast 서비스를 지원하는 Wayland 컴포지터를 사용하는 Linux에서 QScreenCapture 에 대한 지원이 추가되었습니다.
- FFmpeg 라이브러리는 FFmpeg 플러그인에 동적으로 링크되며, 사용되는 공유 FFmpeg 모듈은 Qt Multimedia 와 함께 제공됩니다.
- iOS에서 FFmpeg 미디어 백엔드에 대한 지원이 추가되었습니다.
- 최소 필수 GStreamer 버전을 1.20으로 상향 조정했습니다.
Qt Network 모듈
- QNetworkAccessManager 모듈은 unix+http: 또는 local+http: 스킴을 사용하여 로컬 소켓을 통해 HTTP 요청을 전송하는 기능을 지원하게 되었습니다.
- QDnsLookup 이제 TLS를 통한 DNS 전송을 지원하며, DNS 서버가 데이터 진위 여부를 확인했는지 여부를 알릴 수 있습니다.
- QDnsLookup TLS 어소시에이션 레코드를 지원하게 되었습니다.
- QNetworkCacheMetaData, QNetworkProxy, QNetworkRequest 및 QNetworkReply 에서 헤더를 가져오고 설정할 수 있게 되었습니다.
- QNetworkRequestFactory 향후 요청을 위해 priority 및 attributes 을 설정할 수 있습니다.
- QHttpMultipart 메시지 생성을 용이하게 하기 위해 QFormDataPartBuilder 및 QFormDataBuilder 클래스가 추가되었습니다.
Qt Network Auth 모듈
- QOAuthUriSchemeReplyHandler 클래스를 추가하여, 비공개/사용자 지정 및 https URI 스키마 리디렉션을 처리합니다(지원 플랫폼: iOS, Android, macOS).
- QOAuth2AuthorizationCodeFlow 클래스에 PKCE(Proof of Key Code Exchange) 지원을 추가했습니다. PKCE는 인증 코드 가로채기 공격을 방지하기 위해 권장되는 보안 조치입니다.
- 여러 사용자의 피드백을 반영하여 qnetworkauth를 전반적으로 개선하기 위해 많은 문제를 해결했습니다. 여기에는 여러 버그 수정, 개선 사항, 사용 중단된 기능, 문서 추가 사항, 그리고 시작에 도움이 되는 개요 문서가 포함됩니다.
Qt Positioning 모듈
- Qt Positioning Android 백엔드는 이제 Android 14 이상에서 MSL 형식의 고도를 제공할 수 있습니다.
Qt Protobuf 모듈
- 해당 Qt Protobuf 모듈이 테크 프리뷰 단계에서 정식 출시되었습니다.
Qt Qml 모듈
- QML Language Server 에 새로운 기능이 추가되었습니다: 시맨틱 하이라이팅, 더 많은 JavaScript 언어 지원, Quick 유형에 대한 스니펫 지원, 문서 힌트, QML 파일 이름 변경, `
.qmllint.ini` 경고 구성 지원 pragma ValueTypeBehavior: Assertable가 추가되었습니다. 이를 통해 값 형식에 대한 as 형 변환을 사용한 적절한 형 검사 기능이 가능해졌습니다. 이 프래그마가 없으면 값 형식에 as를 사용할 때 단순히 형을 확인하는 대신 해당 형의 인스턴스가 생성됩니다. 새로운 속성은 형 확인 시 as 형 변환이 올바르게 작동하도록 보장합니다.- 값 유형 처리 기능이 개선되었습니다. qmllint는 이제 문자열로부터 잘 알려진 값 유형(예:
point,rect,size)을 생성할 때 경고를 표시하여 적절한 생성자의 사용을 권장합니다. 값 유형은 이제 기본 생성자를 가질 수 있으며, 유형 시스템과 더 잘 통합됩니다. - 애플리케이션 응답성을 개선하기 위해 증분식 가비지 컬렉션이 도입되었습니다. 이제 가비지 컬렉터는 실행을 장시간 차단하는 대신 여러 프레임에 걸쳐 증분식으로 작업을 수행합니다. 이를 통해 일시 중지 시간이 크게 줄어들고, 특히 복잡한 애플리케이션에서 더욱 부드러운 성능을 제공합니다. 증분식 가비지 컬렉션에는 다음이 포함됩니다:
- 긴 일시 정지 시간을 방지하기 위한 증분 마킹 단계
- 메모리 회수를 위한 증분식 스윕 단계
- 환경 변수를 통한 시간 제한 설정 기능
- QJSEngine::collectGarbage일관성을 위해 ()의 동작이 이제 QML의
gc()메서드와 일치하도록 조정되었습니다. - 이제 생성자 구문을 사용하여 QML에서 직접 생성 가능한 값 유형을 만들 수 있게 되어,
color,rect및 사용자 정의 유형과 같은 값 유형을 더 깔끔하게 초기화할 수 있습니다. - qt_add_qml_module() 의 동작에 영향을 미치는 두 가지 새로운 CMake 정책이 추가되었습니다. QTP0004는 중첩된 폴더 구조를 사용할 때 QML 모듈의 사용을 용이하게 합니다. QTP0005는 임포트 및 종속성을 지정할 때 타깃을 사용할 수 있도록 합니다.
Qt Quick Compiler
- Qml 스크립트 컴파일러는 이제 Qml에서 Cpp로의 컴파일 관련 통계를 기록합니다. 이 정보는 프로젝트에서 all_aotstats 타깃을 실행하여 확인할 수 있습니다.
Qt Quick 모듈
- font.contextFontMerging이 추가되었습니다. 이 속성을 사용하면 대체 글꼴을 선택할 때 전체 텍스트를 고려하는 새로운 글꼴 병합 알고리즘을 활성화할 수 있습니다. 이로 인해 약간의 성능 저하가 발생할 수 있지만, 특정 경우에는 더 나은 결과를 얻을 수 있습니다.
- font.preferTypoLineMetrics 속성이 추가되었습니다. 이 속성을 설정하면 폰트에서 USE_TYPO_METRICS 플래그를 수동으로 설정하지 않았더라도 OpenType 폰트의 타이포그래피 라인 메트릭을 항상 우선적으로 사용할 수 있습니다.
- Image 및 BorderImage 에 ` retainWhileLoading ` 속성이 추가되었습니다. 비동기적으로 로드되는 이미지에 대해 이 속성을 `
true`로 설정하면, 새 이미지가 완전히 로드될 때까지 현재 이미지 데이터가 유지됩니다. 이를 통해 화면 깜빡임을 방지할 수 있습니다. - 2D 변환 행렬을 지정하기 위한 간단한 함수를 제공하는 유틸리티 객체인 ` PlanarTransform`를 추가했습니다.
- Shape 및 PathView 에 선택적으로 반올림된 사각형 경로인 PathRectangle 가 추가되었습니다.
- 끌어당겨지는 데이터를 나타내는 이미지의 크기를 제어하기 위해 Drag.imageSourceSize 속성을 추가했습니다.
- 사용자 정의 깊이 텍스처를 설정하는 방법으로 QQuickRenderTarget::depthTexture 를 추가했습니다.
- QQuickRenderTarget::Flag 열거형을 추가하여, 명명된 생성자를 통해 객체를 생성할 때 뷰 형식을 지정할 수 있도록 했습니다.
- TableView 이제 columns 및 rows 을 프로그래밍 방식 및 대화형 방식으로 이동할 수 있습니다.
- 모든 표준 Qt Quick 항목 및 머티리얼은 멀티뷰 렌더링과 호환되도록 변경되었습니다. 이는 2D 콘텐츠가 Qt Quick 3D XR 씬에 삽입되고 멀티뷰 렌더링이 활성화된 경우, 애플리케이션에 투명하게 활용됩니다. 멀티뷰 렌더링은 렌더링 성능을 향상시키고 AR/VR 기기의 전력 소비를 줄일 수 있습니다.
- 멀티뷰와 호환되는 사용자 정의 머티리얼(QSGMaterial, QSGMaterialShader)을 생성하는 것은 QSGMaterial::viewCount()을 통해 가능합니다.
- QQuickRenderTarget 에서 멀티뷰 렌더링을 사용하여 Qt Quick 렌더링 결과를 2D 텍스처 배열로 출력하는 기능이 추가되었습니다. 이는 QQuickRenderTarget::fromVulkanImage()과 같은 함수의 새로운 오버로드 기능을 통해 구현되며, 다음을 사용하여 구축된 XR 애플리케이션을 위한 멀티뷰 렌더링 지원의 기반을 형성합니다. Qt Quick 3D.
- QQuickRenderTarget 에서 렌더링 패스 종료 시 multisample resolve 을 자동으로 수행하는 기능이 추가되었습니다. 이전에는 리디렉션된 Qt Quick 장면의 멀티샘플 렌더링이 멀티샘플 텍스처를 대상으로 할 때만 가능했으며, 해상도 처리는 애플리케이션이나 해당 셰이더에 맡겨야 했습니다. 이 기능이 활성화되면, Qt Quick 는 이제 컬러 버퍼로 사용할 중간 다중 샘플 텍스처를 자동으로 생성하고, 애플리케이션에서 제공하는 비다중 샘플 텍스처로 자동 변환을 수행합니다. 이를 통해 비다중 샘플 텍스처만 제공하고 사용하는 외부 엔진, 프레임워크 또는 API(예: OpenXR)에서 제공하는 Qt Quick 렌더링 대상 텍스처를 생성할 수 있습니다.
- QQuickRenderTarget 에서 setting a depth texture 에 대한 지원이 추가되었습니다. 이를 통해 Qt 자체의 중간 버퍼를 사용하는 대신, 깊이 데이터가 기록될 애플리케이션 고유의 텍스처(또는 멀티뷰 렌더링을 사용할 경우 텍스처 배열)를 지정할 수 있습니다. 특히 외부 엔진, 프레임워크 또는 API(예: OpenXR)에서 제공하는 깊이 텍스처에 깊이 데이터를 기록해야 할 때 유용합니다.
- QQuickRenderTarget 에서 텍스처 뷰 형식을 지정하는 기능이 추가되었습니다. 이는 QQuickRenderTarget::fromVulkanImage() 및 이와 유사한 함수의 새로운 오버로드에서
viewFormat인수를 통해 지정됩니다. 이 기능은 텍스처 형식에서 sRGB 한정자를 제거하거나 추가할 수 있도록 특별히 제공되며, 텍스처 형식을 제어할 수 없는 외부 엔진, 프레임워크 또는 XR 컴포지터에서 제공하는 텍스처를 다룰 때 유용합니다. 3D API가 셰이더 쓰기 시 암시적으로 수행하는 선형(linear) → sRGB 변환이 허용되지 않는 경우(예: Qt Quick 3D 머티리얼 파이프라인이 이미 동일한 작업을 수행하기 때문)에 유용합니다. - QQuickRenderTarget깊이/스텐실 및 멀티샘플 색상 데이터에 대한 중간 버퍼의 내부 관리 방식이 재설계되었습니다. ` QQuickWindow::setRenderTarget()`를 호출해도 더 이상 모든 내부 임시 버퍼가 무효화되지 않으며, 대신 크기, 형식 및 기타 매개변수가 일치하는 한 재사용을 시도합니다. 이는 매 프레임마다 QQuickWindow 에 서로 다른 네이티브 텍스처를 전달해야 하는 애플리케이션 및 라이브러리(예: 텍스처가 외부 엔진, 프레임워크 또는 XR 컴포지터가 관리하는 버퍼 풀에서 제공되는 경우)에서 성능이 향상될 것으로 예상됩니다.
Qt Quick Controls 모듈
- Windows 11 이상을 실행하는 플랫폼을 위해 설계된 현대적인 네이티브 스타일인 FluentWinUI3 스타일이 추가되었습니다.
- 모듈 Popup 및 파생 유형에 새로운 속성 popupType 이 추가되었습니다. 이 속성을 사용하여 팝업이 장면 내에 표시될지, 아니면 별도의 최상위 팝업 창에 표시될지 제어할 수 있습니다.
- 이제 macOS 스타일에서 네이티브 menus 및 menubars 을 생성할 수 있습니다.
- PaddedRectangle, MnemonicLabel 등과 같은 (내부) QtQuick.Controls.impl 모듈의 유형은 더 이상 QtQuick.Controls나 어떤 컨트롤 스타일이라도 임포트하는 문서에 실수로 노출되지 않습니다. 이러한 유형은 비공개 API이며, QtQuick.Controls.impl을 명시적으로 임포트하지 않는 한 접근할 수 없도록 설계되었습니다.
Qt Quick Shapes 모듈
- ShapePath 의 .fillItem 속성이 추가되었습니다. 이 속성을 사용하면 레이어드 아이템이나 이미지 등 모든 텍스처 제공자 아이템을 셰이프의 채우기로 사용할 수 있습니다.
- ShapePath 의 .fillTransform 속성이 추가되었습니다. 이 속성을 사용하면 항목이든 그라데이션이든 상관없이 도형의 채우기에 임의의 변환을 설정할 수 있습니다.
Qt Quick 3D 모듈
- XR 지원 기술 미리 보기 Qt Quick 3D
- Meta Quest 2 및 3과 같은 OpenXR을 사용하는 헤드 마운트 디스플레이(HMD) 지원.
- Apple Vision Pro 지원.
- 멀티 뷰 렌더링(단일 패스로 양쪽 눈을 모두 렌더링).
- 핸드 트래킹 또는 컨트롤러를 통한 공간 입력 지원.
- 공간 앵커 지원.
- 그림자 렌더링 개선
- 전반적인 품질 개선.
- 향상된 그림자 디버깅 툴.
- 계단식 섀도 맵.
- PCF(Percentage-Closer Filtering) 소프트 섀도우.
- PrincipledMaterial 개선 사항
- 프레넬 효과를 조정하기 위한 추가 매개변수.
- 버텍스 컬러 속성을 기반으로 한 프로퍼티 마스킹 지원.
- CustomMaterial: PrincipledMaterial 의 나머지 속성을 노출합니다.
Qt Quick VectorImage 모듈
- VectorImage 를 도입했습니다: 하드웨어 가속을 활용하고 사전 래스터화 과정 없이 벡터 그래픽을 직접 렌더링 Qt Quick 할 수 있는 컴포넌트입니다. 현재 SVG 형식(
SVG Tiny 1.2프로파일의 정적 하위 집합)을 지원합니다.
Qt XML Shader Tools 모듈
- 멀티뷰 렌더링과 호환되는 셰이더에 대한 지원을 완료했습니다. qt_add_shaders() CMake 함수에
MULTIVIEW키워드를 추가했습니다. - qt_add_shaders()를 통해 빌드 시점에 처리되는 셰이더에 대한 depfile 지원을 추가했습니다. 셰이더 내의
#include지시어를 통해 포함된 파일에 변경 사항이 생기면, 다음 번 프로젝트 빌드 시 해당 셰이더 파일이 재컴파일됩니다.
Qt SQL 모듈
- QSqlDatabase, QSqlQuery 및 QSqlDriver 에 numericalPrecisionPolicy 가 추가되었습니다.
- QSqlDatabase 데이터베이스 연결의 스레드 어피니티를 변경하는 새로운 함수 moveToThread()가 추가되었습니다.
- PostgreSQL 및 MySQL/MariaDB 드라이버는 이제 서버가 클라이언트와 다른 시간대에 있을 때 날짜/시간을 올바르게 처리합니다.
- 디버깅 효율을 높이기 위해 모든 로깅이 이제 범주별 로거인 Qt SQL을 통해 수행됩니다.
- QSqlField::defaultValue, value, readOnly, requiredStatus, length, precision, generated, autoValue 및 tableName 가 이제 속성으로 지정되었습니다.
- QSqlIndex::name 또한 cursorName, QSqlQuery::forwardOnly 및 positionalBindingEnabled 는 이제 속성이 되었습니다.
Qt Test 모듈
- QTEST_THROW_ON_FAIL 및 QTEST_THROW_ON_SKIP C++ 매크로와 환경 변수가 추가되었습니다. 이 매크로와 변수가 정의되면, QCOMPARE()/QVERIFY()/QSKIP() 등이 실패 시 테스트 함수를 종료하는 방식이 변경됩니다. 반환문을 사용하여 바로 인접한 함수만 종료하는 대신, 특수한 예외를 발생시켜 테스트 함수의 하위 함수부터 QtTestLib에 이르기까지 모든 수준에서 종료됩니다.
- 이제 QTRY_*_WITH_TIMEOUT 매크로는 chrono 리터럴도 허용합니다(이전:
int밀리초). - QTest::failOnWarning()에는 이제 매개변수가 없는 오버로드가 있어, 모든 경고를 실패로 처리하는 일반적인 경우를 지원하며, 모든 항목에 일치하는 정규식을 구성할 필요가 없습니다.
- QSignalSpy 더 이상 QObject 을 상속받지 않습니다. 코드에서 QSignalSpy 가 QObject 의 하위 유형이라는 사실을 활용하고 있다면, 이제 이를 고려하여 설계를 재검토해야 합니다.
- QSignalSpy::signal() 메서드는 연결이 실패했을 때 더 이상 반드시 빈 바이트 배열을 반환하지 않습니다. 주어진 QSignalSpy 객체가 유효한 객체에 대한 유효한 신호를 수신 대기하는지 확인하려면 기존의 isValid() 메서드를 사용하십시오.
- 이제 QCOMPARE_xx 매크로는 해당 타입에 대한 인수 의존 조회(Argument Dependent Lookup)를 통해 발견되거나 QTest::toString<T>() 템플릿의 인스턴스화인 QTest::toString() 확장만 찾을 수 있습니다. 이는 QCOMPARE() 매크로의 동작과 일치합니다.
Qt WebEngine 모듈
- QWebEngineFrame 모듈이 추가되어, 특정 프레임에서 자바스크립트를 실행하거나 특정 프레임을 출력하는 등 프레임별 API를 지원합니다.
- QWebEngineClientHints 클라이언트 힌트(client hints) DOM API를 사용하여 웹 페이지에 대한 브라우저 식별 정보를 더 효과적으로 제어할 수 있도록 추가되었습니다.
- QWebEnginePermission 새 웹사이트 권한과 기존 웹사이트 권한을 관리하기 위해 추가되었습니다. QWebEnginePage 에 있던 기존 권한 API는 더 이상 사용되지 않으며, QWebEngineProfile::getPermission() 및 QWebEngineProfile::listPermissions()로 대체되었습니다.
- 브라우징 세션 간에 웹사이트 권한이 어떻게 유지되는지 제어하기 위해 QWebEngineProfile::setPersistentPermissionsPolicy()가 추가되었습니다. 기본적으로 수신된 권한은 디스크에 저장됩니다.
- QWebEnginePermission::ClipboardReadWrite 및 QWebEnginePermission::LocalFontsAccess 권한 유형이 추가되었습니다.
- QWebEngineCertificateError::isMainFrame()는 인증서 오류가 메인 프레임 또는 서브 프레임에서 발생했음을 나타냅니다.
- QWebEngineNavigationRequest::hasFormData()가 추가되어 양식 데이터를 전송하는 탐색 요청을 나타냅니다.
- QWebEngineSettings::imageAnimationPolicy()가 추가되어 이미지 애니메이션 정책을 제어할 수 있게 되었습니다.
도구
QDoc 문서 생성기
- 이제
\keyword명령을 사용하여 섹션 제목에 링크를 설정함으로써, 상황에 맞는 도움말을 개선할 수 있습니다. - QDoc은 더 이상 문서화되지 않은 속성 액세스 함수에 대해 존재하지 않는 문서로 잘못 연결되지 않습니다.
- 빌드 시스템이 더 이상
QDOC2_COMPAT를 정의하지 않습니다. - DocBook 출력을 생성할 때, QDoc은 더 이상 문자를 여러 번 이스케이프 처리하지 않습니다.
\instantiates명령어는 더 이상 사용되지 않습니다. 대신 새로운\nativetype명령어를 사용하십시오. 기존 명령어는 이제 새로운 명령어로 위임되며, QDoc은 해당 명령어가 더 이상 사용되지 않는다는 알림을 생성합니다.- 생성된 문서에서 전체 유형을 숨기기 위한 방법으로 함수의 반환 유형으로
auto을 지정할 수 있습니다. - API 문서의 필수 요소(requisites) 표 서식이 개선되었습니다.
- QDoc이 stdout으로 출력하는 보고서에서 중복 항목이 줄어들었습니다.
- 이제 .qhp 파일에는 관련
\group문서가 없는 경우,\ingroup명령어로 생성된 그룹 항목에 대한 항목이 (올바르게) 포함됩니다. - 이제 QDoc은 클래스와 유형뿐만 아니라 .qhp 파일의 네임스페이스에 대한 제목도 생성합니다.
- QDoc은 이제
-DDEFINE=VALUE명령줄 옵션을 올바르게 구문 분석합니다. - 다음과 같은 경우 QDoc에서 새로운 경고가 생성됩니다.
- qhp 하위 프로젝트의 indexTitle 속성이 발견되지 않는 경우.
- 동일한 C++ 클래스에 대해 `
\nativetype` 명령을 여러 번 사용한 경우. - 프로젝트당 파일을 여러 번 생성할 때.
- 이전에 오버로드로 선택되었으나 `
\overload` 명령어로 명시적으로 표시되지 않은 함수 중, 정렬 변경으로 인해 주 시그니처로 선택된 경우. 이러한 함수는 전체 내용을 문서화하거나 `\overload` 명령어로 태그를 지정해야 합니다.
- QDoc은 더 이상 오버로드된 생성자의 문서화되지 않은 매개변수에 대해 경고를 표시하지 않으며, 일부 불필요한 링크 경고가 제거되었습니다.
- 링크 경고가 이제 적절한 위치를 보고합니다.
- QDoc은 이제 Clang 17 이상이 필요합니다.
- QDoc 매뉴얼이 여러 차례 업데이트되었습니다.
- 새로운
\tm명령을 사용하여 상표에 태그를 지정할 수 있습니다. 구성 변수navigation.trademarkspage를 정의하면 상표 기호(tm)가 해당 페이지로 연결되는 링크가 됩니다. \deprecated command는 이제 향후 버전도 지원합니다.- QDoc 매크로 인자에 서식 명령어를 사용할 수 있게 되었습니다.
\compareswith명령어는 이제 중괄호로 묶인 인수를 허용합니다.-outputdir명령줄 옵션이 이제 현재 작업 디렉터리를 기준으로 합니다. 또한,nosubdirs구성 변수가 더 이상outputdir의 내용을 왜곡하지 않습니다.- 사용되지 않고 문서화되지 않은
clangdefines구성 변수가 제거되었습니다. - QDoc은 더 이상
.qhp.sha1파일을 생성하지 않습니다. - QDoc은 이제 목차의 항목에 대한 고유한 참조를 생성합니다.
- HTML 출력을 생성할 때, QDoc은 이제 API 엔티티에 대한 링크에만
translate="no"를 적용합니다. - 다중 프로젝트 문서 빌드 시 발생하는 이름 충돌이 줄어들었습니다. 이는 특정 구성에서 생성된 파일 이름에 영향을 미칠 수 있습니다.
- 이제 새로운
\qtcmaketargetitem명령을 사용하여 CMake 타깃을 지정할 수 있습니다. - 첨자된 함수 인자에 대한 지원이 제거되었습니다. 이 기능은 문서화되지 않았고, 사용되지 않았으며, 버그가 많았습니다. 이 기능을 제거함으로써 문서화된 모든 함수 시그니처와
\a명령어 인자에 대해 정규 표현식을 구성하고 매칭을 시도하는 과정을 줄일 수 있습니다. - 함수 시그니처에 대한 링크의 표시 방식이 더욱 일관성 있게 개선되었습니다.
- QDoc은 이제 C++ 열거형에서 QML 문서로 자동 생성된 값을 지원합니다.
outputprefixes및outputsuffixes구성 변수가 이제 QML 타입 및 모듈 문서뿐만 아니라 C++ 타입 문서에도 적용됩니다. 이는 두 개 이상의 모듈이 동일한 타입 이름을 정의하는 다중 모듈 문서 구성에서 유용할 수 있습니다.
플랫폼 변경 사항
데스크톱 플랫폼
Arm 기반 데스크톱
- 이제 Windows on Arm 데스크톱에서 Qt 및 Qt 애플리케이션을 빌드하고 개발할 수 있습니다.
- 이제 Arm 데스크톱의 Linux에서 Qt 및 Qt 애플리케이션을 빌드하고 개발할 수 있습니다.
Windows
- 글꼴 시스템이 DirectWrite를 기본 백엔드로 사용하도록 변경되었습니다. 이를 통해 기존 GDI 백엔드에서는 사용할 수 없었던 몇 가지 최신 기능을 사용할 수 있게 되었습니다. 이전 백엔드는 여전히 사용할 수 있으며, QPA 플러그인에
fontengine=gdi를 매개변수로 전달하여 활성화할 수 있습니다.
macOS
- macOS 15에 대한 지원이 추가되었습니다.
- 전체 화면 애플리케이션의 카메라 노치와, 내용이 제목 표시줄까지 확장되는 창의 경우 모두에 대해 안전 영역 여백을 지원합니다.
- Qt Quick 창 크기를 조정할 때 발생하는 깜빡임 현상을, 트랜잭션을 사용하여 Metal 레이어를 표시함으로써 수정했습니다.
- Qt Quick 창의 크기를 조정할 때 애니메이션이 실행되도록 했습니다.
- 창 테두리 크기 조정 커서에 새로운 NSCursor API를 채택했습니다.
- 서비스 메뉴 및 쓰기 도구 지원을 위해 NSServicesMenuRequestor 프로토콜을 구현했습니다.
Linux의 Wayland 클라이언트
- GNOME에서 사용되며 GNOME과 유사한 스타일을 적용하는 새로운 창 장식 스타일을 추가했습니다.
- 이제 대화 상자의 모달 상태가 새로운 xdg-dialog-v1 프로토콜을 통해 컴포지터로 전달됩니다.
- 이제 창을 표시할 때 컴포지터에 활성화 요청도 전송됩니다( Qt::WA_ShowWithoutActivating 가 설정된 경우는 제외).
- qtwaylandscanner에 null QString 에 대해 null을 전송하는 기능이 추가되었습니다.
wayland-scanner에 전달되는 옵션을 제어하는PUBLIC_CODE및PRIVATE_CODE옵션이 qt_generate_wayland_protocol_client_sources() 에 추가되었습니다.- Qt Multimedia 에서 XDG Desktop Portal을 통해 ScreenCast 서비스를 사용하여 화면 캡처 기능을 구현했습니다.
모바일 플랫폼
Android
- 지원되는 최소 버전을 Android 9로 상향 조정했습니다.
- build.gradle 네임스페이스 속성에 대한 지원을 추가했습니다.
- 패키지 이름을 설정하기 위한 CMake 속성 QT_ANDROID_PACKAGE_NAME을 추가했습니다.
- Gradle을 8.10으로, AGP를 8.6.0으로 업데이트했습니다.
- AAR 라이브러리 패키지 빌드 지원을 추가했습니다.
- Qt Multimedia 에서 네이티브 Android 백엔드가 더 이상 사용되지 않습니다.
- QLibrary 로 라이브러리를 열 때, 더 이상 기본적으로 JNI_OnLoad가 호출되지 않습니다.
- QtQuickView 및 QML 임베딩:
- QtQuickView API에 강력한 타입 지정 지원 기능을 추가했습니다.
- QML 콘텐츠를 관리하기 위한 API가 추가되었으며, 이에 따라 QtQuickView 내의 관련 Java 클래스들이 별도의 클래스로 분리되었습니다. 여기에는 다음이 포함됩니다:
- QtQuickView.SignalListener → QtSignalListener.
- QtQuickView.StatusChangeListener → QtQmlStatusChangeListener.
- QtQuickView Status → QtQmlStatus.
- QAbstractItemModel, QAbstractListModel, QModelIndex 을 각각 래핑하는 Java 클래스 QtAbstractItemModel, QtAbstractListModel, QtModelIndex가 추가되었습니다.
- 서비스(Service)에서 QML을 임베딩하는 기능을 지원하도록 추가되었습니다.
iOS
- iOS 18에 대한 지원이 추가되었습니다.
- QScreen::orientation()을 통해 UIDevice.currentDevice.orientation이 잘못 보고되던 문제를 수정했습니다.
- 접근성 통합 기능이 개선되었습니다.
visionOS
- visionOS에 대한 예비 지원이 추가되었습니다.
임베디드 플랫폼
QNX
- 기술 미리보기(Technology Preview)로 QNX 8.0 지원이 추가되었습니다.
- QNX 8.0은 멀티미디어를 지원하지 않으므로, configure에서 `
-skip qtmultimedia`를 사용하십시오.
VxWorks
- VxWorks 24.03 지원이 추가되었습니다.
Boot to Qt
- Yocto 5.0(Scarthgap)에 대한 지원이 추가되었습니다.
- 대상 하드웨어 지원 수준이 업데이트되어 Tier 1에 새로 지원되는 보드가 추가되었습니다:
- Raspberry Pi 5.
- 대상 하드웨어 지원 수준이 업데이트되어 Tier 2에 새로 지원되는 보드가 추가되었습니다:
- NVIDIA Jetson AGX Orin 개발자 키트(Tier 3에서 승격).
- 라즈베리 파이 4 64비트 (Tier 1에서 하향 조정됨).
- 대상 하드웨어 지원 등급이 업데이트되어 Tier 3에 새로 지원되는 보드가 추가되었습니다:
API 변경 사항 목록
이 페이지에는 Qt 6.8의 API 변경 사항에 대한 개요가 포함되어 있습니다:
© 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.