Qt 6.4의 새로운 기능
Qt 6.4의 신규 및 복원된 모듈
Qt 6.4에는 다음과 같은 모듈이 추가되었습니다:
- Qt HTTP Server - Qt 응용 프로그램에 HTTP 서버를 임베드하기 위한 모듈. 이 모듈은 기술 프리뷰 버전으로, API 및 ABI 안정성이 보장되지 않습니다.
- Qt Quick 3D Physics - Qt Quick 3D 에 물리적 시뮬레이션 기능을 추가하는 하이레벨 QML 모듈.
Qt 6.4는 Qt 5의 Qt TextToSpeech 모듈을 다시 도입했습니다. 이 모듈은 Qt 6.3에는 없었습니다. 이제 이 모듈은 CMake 빌드 시스템을 사용하며 Qt 6에서 작동합니다.
각 모듈의 변경사항에 대한 자세한 내용은 Qt 6의 Qt 모듈 변경사항에서 확인할 수 있습니다.
Qt 6.4의 새로운 기능
Qt Core 모듈
- QLatin1String 의 별칭으로 QLatin1StringView 을 추가했습니다. 이제 라틴 1 문자열 뷰를 참조할 때 권장되는 이름입니다.
QLatin1StringView(const char *, qsizetype)
및QLatin1StringView(const char *, const char *)
생성자가 명시적이지 않게 되었습니다.- Qt::Literals::StringLiterals 네임스페이스에서 라틴 1 문자열 및 문자 리터럴을 생성하기 위한 리터럴 연산자
_L1
를 추가했습니다. - Qt::Literals::StringLiterals 네임스페이스에서 각각 QString 및 QByteArray 리터럴을 생성하기 위한 리터럴 연산자
_s
및_ba
을 추가했습니다._s
및_ba
을 위해_qs
및_qba
을 폐지했습니다. - 같은 이름의 알고리즘 오버로드와 혼동을 피하기 위해 매개변수를 받지 않는 QString::count() 및 QByteArray::count()를 더 이상 사용되지 않습니다.
size()
또는length()
메서드로 대체할 수 있습니다. - QStringEncoder 및 QStringDecoder 메서드는 이제 ICU 지원을 활성화하여 Qt를 빌드할 때 ICU에서 지원하는 모든 코덱을 지원합니다.
- Android 및 JNI 개발용 클래스인 QJniObject 및 QJniEnvironment 에서 callMethod, findMethod 및 이와 유사한 메서드에 대한 오버로드가 추가되었습니다. 이제 서명 문자열을 지정하지 않고도 Java 함수를 호출하고 네이티브 메서드를 등록할 수 있습니다.
- 새로운 템플릿 함수 QJniObject::construct()를 사용하면 유형이나 서명 문자열을 지정하지 않고도 C++에서 Java 클래스를 인스턴스화할 수 있습니다.
- QByteArray 이제 인스턴스에서 fromPercentEncoding() 정적 메서드를 호출하는 대신 percentDecoded() 인스턴스 메서드가 있습니다.
- QTextStream 이제 char16_t의 입력 및 출력을 지원합니다.
- QStringView 이제 localeAwareCompare() 메서드가 있으며 주어진 하위 문자열이 몇 번 나타나는지 카운트()할 수 있습니다.
- QDate 이제 사용 가능한 경우 다양한 std::chrono 년-월-일 구조 유형으로 구성할 수 있으며, 사용 가능한 경우 std::chrono::일 수를 받는 addDuration() 메서드가 있습니다.
- QDateTime 마찬가지로 같은 유형을 더하거나 빼는 산술, 이를 반환하는 QDateTime 값의 차이, 한 순간을 설명하는 다양한 std::chrono 유형을 취하는 정적 의사 생성자 몇 개와 함께 addDuration(std::chrono::밀리초)를 얻습니다.
- QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *)을 추가했습니다.
- QCalendar의 이름에 의한 구조체는 이제 QAnyStringView 를 허용합니다.
Qt GUI 모듈
- QTextDocumentFragment::toMarkdown(), QTextDocumentFragment::fromMarkdown(), QTextCursor::insertMarkdown()를 추가했습니다.
Qt Quick Module
- TableView 에 키보드 탐색 및 선택, 행 및 열 선택, 애니메이션, 하위 셀 위치 지정 등에 대한 지원을 개선하는 몇 가지 새로운 프로퍼티와 함수가 추가되었습니다.
- TreeView 이제 선택 기능을 지원하며 트리의 노드를 재귀적으로 확장 및 축소할 수 있는 더 광범위한 API가 추가되었습니다.
- QQuickWidget 이제 OpenGL 외에도 지원되는 모든 3D 그래픽 API(Vulkan, Metal, Direct3D 11)에서 작동합니다. 애플리케이션은 더 이상 QQuickWidget 을 사용할 때 OpenGL로 렌더링을 강제할 필요가 없습니다.
- 사용자 지정 머티리얼과 함께 사용되는 셰이더에서 결합된 이미지 샘플러 배열에 대한 지원이 추가되었습니다. 이는 새로운 함수 QSGMaterialShader::combinedImageSamplerCount() 및 기존
texture
인수의 향상된 의미 QSGMaterialShader::updateSampledImage()에 의해 지원됩니다. - QSGMaterialShader::GraphicsPipelineState 에서 폴리곤 래스터화 모드를
solid
에서line
으로 변경하는 기능이 추가되었습니다(사용 중인 3D API가 이를 지원하는 경우에만 사용 가능). - ShaderEffectSource.format 와 layer.format 는 이전 Qt 6 릴리스에서는 유용하지 않았으며, 레거시 값은 실제로 무시되었습니다. 이제 문서화되어 실제로 유용한 새 값이 도입되었으며, 특히 원하는 경우 RGBA8 대신 부동 소수점(FP16 또는 FP32) 텍스처를 요청할 수 있습니다.
- QQuickRenderTarget::fromPaintDevice()를 추가하여
software
백엔드를 사용하여 QQuickWindow 에서도 출력을 리디렉션할 수 있게 되었습니다. - QQuickRenderTarget 에 텍스처 또는 이미지 객체의 기본 형식을 지정할 수 있는 오버로드를 추가했습니다. 이는 RGBA8이 아닌 네이티브 텍스처로 작업해야 하는 일부 고급 사용 사례와 관련이 있습니다. Qt의 렌더링 인프라에서 지원하는 네이티브 포맷만 허용된다는 점에 유의하세요.
- QQuickRenderTarget 에 setMirrorVertically()를 추가하여 3D API 기반 렌더링을 텍스처로 리디렉션할 때 Qt Quick 렌더러에 행렬을 변경하여 수직으로 뒤집힌 결과를 얻도록 요청할 수 있습니다.
- Qt Quick 이제 기본 그래픽 장치가 Qt와 호환되지 않는 경우 환경 변수를 수동으로 설정할 필요 없이 Windows에서 Direct 3D(WARP)의 소프트웨어 래스터화 플랫폼을 사용하려고 시도합니다.
- Qt Quick 시나리오의
threaded
렌더 루프에 깨진 vsync 기반 스로틀링을 인식하기 위한 간단한 휴리스틱을 추가했습니다. 프레임이 너무 빨리 렌더링/표시되면 렌더 스레드를 차단하지 않고 애니메이션을 실행하는 일반 타이머 기반 방식으로 자동 전환하여 QML 애니메이션이 너무 빨리 실행되는 것을 방지합니다. - 사용자 지정 애니메이션에 FrameAnimation 을 추가했습니다. 애니메이션 프레임과 동기화하여 사용자 정의 스크립트를 실행할 수 있습니다.
Qt Quick Controls 모듈
- iOS용 새로운 네이티브 스타일인 iOS 스타일을 테크 프리뷰로 추가했습니다.
- TreeViewDelegate 에는 TreeView 에서 현재, 선택 또는 강조 표시 여부를 설명하는 세 가지 새로운 속성이 있습니다.
Qt Quick Dialogs 모듈
- ColorDialog 을 추가했습니다. 이를 지원하는 플랫폼에서는 네이티브 대화 상자로, 그 외 플랫폼에서는 비네이티브 Qt Quick 대화 상자로 표시됩니다.
비네이티브 대화 상자는 모든 비네이티브 스타일을 지원합니다: 기본, 퓨전, 상상, 머티리얼 및 유니버설.
Qt Widgets 모듈
- QFormLayout 에는 인덱스, 입력 위젯 또는 행 레이아웃별로 행을 숨기고 표시할 수 있는 오버로드가 있는 새로운 isRowVisible() 및 setRowVisible() 멤버 함수가 있습니다.
- QKeySequenceEdit 새로운 clearButtonEnabled 프로퍼티가 있습니다. 이 속성을 사용하여 위젯에 사용자가 편집 내용을 지울 수 있는 지우기 버튼을 표시할지 여부를 제어할 수 있습니다.
- QWizard 에는 현재 페이지와 대상 사이의 페이지를 방문하지 않고도 애플리케이션이 페이지로 이동할 수 있는 새로운 슬롯( setCurrentId)이 있습니다.
Qt Network 모듈
- QSslServer 을 추가했습니다. 이렇게 하면 TLS를 통해서만 통신하는 서버를 간단하게 만들 수 있습니다.
- QNetworkInformation 이제 더 이상 사용되지 않는 것으로 표시된 해당 과부하 load(Features/QStringView) 함수를 대체하기 위한 loadBackendByFeatures(Features) 및 loadBackendByName(QStringView)이 있습니다.
Qt Test 모듈
- 이제 시간 초과가 1초 미만인 경우 QTestEventLoop::enterLoopMSecs()가 PreciseTimer를 사용합니다.
- 이제 사용자 정의 QTest::compare() 구현은 QTest::compare_helper() 호출을 수정하여 이제 더 이상 사용되지 않는 이전 오버로드 대신 새로운 두 오버로드 중 하나를 사용해야 합니다(실제로 검사에 실패한 경우 실패 보고서의 값을 나타내는 문자열만 생성하기 위해).
- QAbstractItemModelTester::setUseFetchMore() 추가.
- 새로운 매크로 QCOMPARE_{EQ,NE,GT,GE,LT,LE}()는 QCOMPARE()와 유사한 보고를 통해 비교를 지원합니다. EQ 매크로는 QCOMPARE()의 사용자 지정 없이 정확한 비교를 수행합니다. 이 함수는 일반적인 QTRY_COMPARE_*() 및 QTRY_COMPARE_*_WITH_TIMEOUT() 변형도 함께 제공됩니다.
Qt QML 모듈
- QML 언어
- 이제 이름을 가진 사용자 정의 값 유형을 등록할 수 있습니다. 즉, QML_VALUE_TYPE 인수는 더 이상 무시되지 않습니다. 소문자여야 합니다. 등록한 후에는 QML에서 자체 값 유형의 속성을 선언할 수 있습니다.
- 이제 QML에서 명명된 값 유형을 목록에 저장할 수 있습니다. 예를 들어 QML의 list<rect>는 C++의 QList<QRectF>와 같습니다. 따라서 이러한 프로퍼티에 var를 사용하거나 해당 요소를 객체로 래핑할 필요가 없습니다.
- 새로운 pragma ComponentBehavior를 사용하면 QML 파일에 정의된 컴포넌트를 생성 컨텍스트 외부에서 사용할 수 있는지 여부를 지정할 수 있습니다. 그렇지 않은 경우(pragma ComponentBehavior: Bound) Qt Quick Compiler 코드를 더 잘 최적화할 수 있습니다.
- QML 유형 컴파일러(qmltc)
- 확장된 QML 언어 지원 범위
- QML 스크립트 컴파일러(qmlsc, qmlcachegen)
- 이제 값 유형 목록에 대한 다양한 연산이 C++로 컴파일됩니다.
- 이제 데드 코드와 데드 스토어가 더욱 적극적으로 최적화됩니다.
- 이제 값을 읽는 위치가 아니라 값을 쓰는 위치에서 유형 변환이 이루어집니다. 값을 여러 번 읽는 경우 더 빨라집니다.
- QML 린터(qmllint)
- QML Language Server (qmlls)
- 완성 지원 추가
- 일부 린터 경고/힌트에 대한 코드 동작 수정이 추가되었습니다.
- 실행 파일을 libexec으로 옮겼습니다.
- CMake API 정리:
- QML 타입 컴파일러를 호출하는 데 사용되는qt_target_compile_qml_to_cpp() 가 더 이상 사용되지 않습니다. 이 기능은 qt_add_qml_module()에 통합되었습니다.
Qt Quick 3D 모듈에 통합되었습니다.
- 라이트맵 베이킹 지원의 미리보기가 추가되었습니다. 레이트레이싱을 사용하여 미리 생성된 라이트맵으로 정적 전역 조명 솔루션을 제공합니다. 자세한 내용은 라이트맵 및 전역 조명을 참조하십시오.
- 금속성/거칠기 대신 스페큘러/광택 워크플로를 사용할 수 있도록 SpecularGlossyMaterial 을 추가했습니다.
- 선 모양의 스프라이트 파티클을 만들 수 있는 LineParticle3D 유형을 추가했습니다.
- 리플렉션 프로브에 의해 모델이 렌더링되는지 여부와 리플렉션에서 볼 수 있는지 여부를 제어하는 Model.castsReflection 프로퍼티를 추가했습니다. sprite particles 에도 동일한 프로퍼티가 도입되었습니다.
- 캡처 포인트의 위치에 영향을 주지 않고 프로브의 위치를 기준으로 상자를 이동하는 ReflectionProbe.boxOffset 프로퍼티를 추가했습니다.
- 프로브 상자를 시각화하는 큐브를 표시하는 ReflectionProbe.debugView 속성을 추가했습니다.
- HeightFieldGeometry 을 추가하여 이미지 파일에서 높이 필드 지오메트리를 만들 수 있도록 했습니다.
- CubeMapTexture 을 추가하여 셰이더에서 큐브 맵 텍스처로 사용자 정의 머티리얼 및 포스트 프로세싱 효과를 사용할 수 있도록 했습니다. 입력은 6면 모두에 대한 이미지 데이터가 포함된
.ktx
컨테이너 또는 6개의 개별 이미지 파일입니다. - 라이트 프로브 대신 큐브맵에서 스카이박스를 렌더링하는 기능이 추가되었습니다. 이 기능은 백그라운드 모드 SceneEnvironment.SkyBoxCubeMap 를 설정하여 요청할 수 있습니다.
- HDR 라이트 프로브 또는 스카이박스 텍스처를 절차적으로 생성하는 ProceduralSkyTextureData 을 추가했습니다.
- 포인트 및 스포트 라이트의 그림자 렌더링이 개선되었습니다.
- View3D 에 renderFormat 속성을 추가하여 View3D 이 (기본) 오프스크린 렌더 모드를 사용할 때 백킹 텍스처 형식을 지정할 수 있도록 했습니다. 사용 가능한 값은 ShaderEffectSource.format (이 역시 6.4에서 수정됨)와 동일합니다. 이를 통해 기본 RGBA8 대신 부동 소수점 텍스처를 사용할 수 있습니다.
- UIP 파일 가져오기 지원이 제거되었습니다. 이전 Qt 3D Studio 기능에서 Qt Quick 3D 로의 매핑은 이전 릴리스에서 이미 문제가 있었습니다. 따라서 Qt 6.4에서는
balsam
도구에서.uip
파일에 대한 지원이 제거되었습니다.
Qt 연결 모듈
- QNdefMessage 은 더 이상 내보내지 않습니다. 이 클래스는 QList 을 공개적으로 상속하지만 QList 은 내보낸 클래스에서 상속하도록 설계되지 않았습니다.
경고: 이전 버전과 호환되지는 않지만 향후 BC 중단을 방지할 수 있습니다.
- Qt Bluetooth 에서는 누락된 권한 오류를 나타내는 새로운 오류 코드로 다양한 오류 열거형이 확장되었습니다. 현재 이러한 코드는 Android 및 macOS/iOS에서 사용됩니다. QBluetoothLocalDevice::MissingPermissionsError 을 참조하세요.
Qt WebEngine 모듈
- HTML5 파일 시스템 액세스 API가 추가되었습니다. QWebEngineFileSystemAccessRequest
- QWebEngineLoadingInfo 특히 HTTP 오류에 대한 오류 코드 개선
- QWebEngineView::setPage()는 이제 이미 로드된 페이지에서 작동합니다.
- URL 드래그 앤 드롭 시 탐색을 비활성화할 수 있도록 QWebEngineSettings::NavigateOnDrop이 추가되었습니다.
- QWebEngineUrlRequestInfo::ResourceTypeWebSocket 웹소켓 연결 차단을 허용하기 위해 추가되었습니다.
플랫폼 변경 사항
웹어셈블리
이제 웹어셈블리 플랫폼에서 Qt가 완전히 지원됩니다. 자세한 내용은 웹어셈블리용 Qt 플랫폼 설명서를 참조하세요.
모바일 플랫폼
Android
- Gradle을 7.4.2로 업데이트하고 Android Gradle 플러그인을 7.2.1로 업데이트했습니다.
- NDK를 r23b(23.1.7779620)로 업데이트했습니다.
- CMake에서 직접 서명된 패키지를 빌드할 수 있도록 CMake 변수 QT_ANDROID_SIGN_APK 및 QT_ANDROID_SIGN_AAB를 추가했습니다.
- 안드로이드 접근성이 이제 스크롤 이벤트를 인식합니다.
- Android 앱의 에셋 로딩 속도가 개선되었습니다.
임베디드 플랫폼
Boot to Qt
- Boot to Qt 스택이 Yocto 4.0.3(커크스톤)을 사용하도록 업데이트되었습니다.
- 새로운 레퍼런스 디바이스로 NXP i.MX8M Plus LPDDR4 EVK가 추가되었습니다.
QNX
- 에 대한 지원이 추가되었습니다. Qt Multimedia.
WebOS
- Qt 6.4가 LG webOS OSE 2.18.0(webOS용 Qt)에서 작동하는 것으로 확인되었습니다.
API 변경 사항 목록
이 페이지에는 Qt 6.4의 API 변경 사항에 대한 개요가 포함되어 있습니다:
© 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.