변경 사항 Qt GUI
Qt 6의 변경 사항은 프레임워크를 더 효율적이고 사용하기 쉽게 만들기 위한 의도적인 노력의 결과입니다.
저희는 각 릴리스에서 모든 공개 API에 대해 바이너리 및 소스 호환성을 유지하기 위해 노력하고 있습니다. 하지만 Qt를 더 나은 프레임워크로 만들기 위한 노력의 일환으로 일부 변경 사항은 불가피했습니다.
이 주제에서는 Qt GUI 의 변경 사항을 요약하고, 이를 처리하는 방법에 대한 지침을 제공합니다.
커널 클래스
QBitmap 클래스
QPixmap 에서 QBitmap 를 암시적으로 생성하는 기능은 더 이상 지원되지 않습니다. 생성자와 할당 연산자가 명시적으로 변경되었으며, 더 이상 사용되지 않는 것으로 표시되었습니다. 대신 새로운 정적 팩토리 함수 fromPixmap 를 사용하십시오.
QCursor 클래스
QPixmap 에서 QCursor 로의 암시적 생성 방식은 더 이상 지원되지 않으며, 생성자가 명시적으로 변경되었습니다.
QKeyCombination 클래스
QKeyCombination 는 키와 선택적 수정키의 조합을 저장하기 위한 새로운 클래스입니다. 이 클래스는 Qt::Key 열거형의 값과 수정키를 유형 안전하게 결합하는 데 사용되어야 합니다.
향후 C++ 표준에서는 관련 없는 열거형 유형 간의 산술 연산을 불법으로 규정할 가능성이 높으므로, 현재 operator+()를 사용하여 키와 수정자를 결합하는 코드는 마이그레이션할 것을 권장합니다. operator|()를 사용하고, int 를 기대하는 API는 QKeyCombination 를 기대하도록 변경하십시오.
키 조합에 대해 int 을 기대하는 기존 API는 QKeyCombination::toCombined()을 사용하여 호출할 수 있습니다.
텍스트 클래스
QFontDatabase 클래스
QFontDatabase 클래스에는 이제 정적 멤버 함수만 남아 있습니다. 생성자는 더 이상 사용되지 않습니다. 예를 들어,
const QStringList fontFamilies = QFontDatabase().families();다음과 같이 사용하십시오
const QStringList fontFamilies = QFontDatabase::families();QFont 클래스
QFont::Weight 열거형의 수치 값이 OpenType 두께 값과 일치하도록 변경되었습니다. ` QFont::setWeight()`는 ` int` 대신 열거형 값을 기대하며, 정수 값으로 세터(setter)를 호출하는 코드는 컴파일 오류가 발생합니다. 기존 정수 값을 계속 사용하려면 `QFont::setLegacyWeight()`를 사용하십시오.
그리기 클래스
xml-ph-0000@deepl.internal 및 기타 인쇄 관련 클래스에 대한 정보는 Qt Print SupportQPagedPaintDevice 및 기타 인쇄 관련 클래스에 대한 정보는 포팅 가이드를 참조하십시오.
유틸리티 클래스
QIntValidator 및 QDoubleValidator
setRange() 메서드는 더 이상 가상 메서드로 표시되지 않습니다.
OpenGL 클래스
Qt의 렌더링 기반으로서 Qt RHI가 도입됨에 따라, QOpenGL 접두사가 붙은 대부분의 클래스는 Qt OpenGL 모듈로 이동되었습니다.
자세한 내용은 Qt OpenGL 이식 가이드에서 확인할 수 있습니다.
주목할 만한 예외 중 하나는 QOpenGLContext 클래스로, 이 클래스는 여전히 Qt GUI 에 있습니다.
또한, QOpenGLWidget 클래스는 Qt OpenGL Widgets라는 새로운 모듈로 이동되었습니다.
QOpenGLContext 클래스
QOpenGLContext::versionFunctions() 함수는 QOpenGLVersionFunctionsFactory::get()로 대체되었습니다. QOpenGLVersionFunctionsFactory 는 이제 공개 클래스이며, Qt OpenGL 모듈의 일부입니다.
ANGLE
Windows에서, 타사 OpenGL ES-Direct 3D 변환기인 ANGLE은 더 이상 Qt에 포함되지 않습니다. 즉, Qt::AA_UseOpenGLES 및 환경 변수 QT_OPENGL=angle 는 더 이상 아무런 효과도 미치지 않습니다. 동적 OpenGL 빌드에서는 OpenGL 자체의 초기화에 실패하더라도 ANGLE로 자동 전환되지 않습니다. 예를 들어 QOpenGLWidget 를 통해 OpenGL을 직접 사용하는 QWindow 또는 QWidget 기반 애플리케이션의 경우, 이는 런타임 시 OpenGL 자체만이 유일한 옵션임을 의미합니다. 그러나 사전 빌드된 Qt 패키지와 함께 제공되는 Mesa llvmpipe와 같은 순수 소프트웨어 OpenGL 구현을 사용하는 대안은 여전히 이용 가능합니다. Qt Quick 및 Qt Quick 3D 애플리케이션의 경우, Qt 6에서는 OpenGL 외에도 Direct 3D 11, Vulkan 및 Metal에 대한 지원을 도입했습니다. Windows에서는 기본 선택 사항이 Direct 3D이므로, OpenGL 이외의 그래픽 API에 대한 지원이 추가됨으로써 ANGLE의 제거로 인한 영향이 완화됩니다.
네이티브 클립보드 통합
Qt 5에서는 QtMacExtras 의 QMacPasteboardMime 및 Windows QPA API의 QWindowsMime 를 통해 플랫폼별 또는 사용자 정의 클립보드 형식을 Qt에 통합하기 위한 인터페이스를 제공했습니다. Qt 6.6부터는 macOS용 QUtiMimeConverter 클래스와 Windows용 QWindowsMimeConverter 클래스가 이에 상응하는 기능을 제공합니다.
QWindowsMime에서 QWindowsMimeConverter 로 이식하는 데는 가상 인터페이스가 동일하므로 사실상 변경 사항이 거의 없습니다. 다만, Qt 6에서는 더 이상 QWindowsMimeConverter 구현체를 등록할 필요가 없으며, 해당 타입을 인스턴스화하면 변환기가 암시적으로 등록됩니다.
QMacPasteboardMime을 QUtiMimeConverter 로 이식하려면 일부 가상 함수의 이름을 변경해야 합니다. 참고로, QMacPasteboardMime API는 macOS의 네이티브 클립보드 형식을 지칭할 때 구식 용어인 ` flavor `를 사용했으나, 현재 플랫폼에서는 ` Uniform Type Identifiers`, 즉 ` UTI`를 사용하며, Qt는 함수 및 매개변수 이름을 이에 맞춰 조정했습니다.
mimeFor 및 flavorFor 함수는 각각 mimeForUti 및 utiForMime 구현체로 대체되었습니다. 이 함수들은 변환기가 입력 형식을 변환할 수 있는 MIME 유형 또는 UTI 의 이름을 반환해야 하므로, 일반적으로 기존 오버라이드 함수의 이름을 변경하는 것만으로도 포팅이 가능합니다. QUtiMimeConverter 에 있는 convertToMime, convertFromMime 및 count 함수는 QMacPasteboardMime 버전의 함수와 동일합니다.
canConvert, converterName 함수는 더 이상 필요하지 않습니다. 이 함수들은 위 함수들의 구현을 통해 암시적으로 제공되므로, 해당 함수들에 대한 오버라이드는 제거할 수 있습니다.
QWindowsMimeConverter 와 마찬가지로, 등록은 해당 타입을 인스턴스화하여 수행됩니다.
© 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.