변경 사항 Qt GUI
Qt 6는 프레임워크를 보다 효율적이고 사용하기 쉽게 만들기 위한 의식적인 노력의 결과입니다.
각 릴리스에서 모든 공개 API에 대해 바이너리 및 소스 호환성을 유지하려고 노력합니다. 하지만 Qt를 더 나은 프레임워크로 만들기 위해 몇 가지 변경이 불가피했습니다.
이 항목에서는 이러한 변경 사항을 Qt GUI 에 요약하고 이를 처리하기 위한 지침을 제공합니다.
커널 클래스
QBitmap 클래스
QPixmap 에서 QBitmap 의 암시적 구성은 더 이상 지원되지 않습니다. 생성자 및 할당 연산자는 명시적으로 만들어졌으며 더 이상 사용되지 않는 것으로 표시되었습니다. 대신 새로운 정적 팩토리 함수 fromPixmap 를 사용하세요.
QCursor 클래스
QPixmap 에서 QCursor 의 암시적 구성은 더 이상 지원되지 않으며, 생성자가 명시적으로 만들어졌습니다.
QKeyCombination 클래스
QKeyCombination 은 키와 선택적 수정자의 조합을 저장하기 위한 새로운 클래스입니다. 이 클래스는 Qt::Key 열거형의 값과 수정자를 유형 안전 방식으로 결합하는 대신 사용해야 합니다.
향후 C++ 표준에서는 서로 관련이 없는 열거형 간의 산술 연산을 불법으로 선언할 가능성이 높으므로 현재 연산자+()를 사용하여 키와 수정자를 결합하는 코드를 마이그레이션하는 것이 좋습니다. 연산자|()를 사용하고 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
대신 열거형 값을 기대하며, 정수로 설정자를 호출하는 코드는 컴파일에 실패합니다. 이전 정수 값을 계속 사용하려면 QFont::setLegacyWeight()를 사용하십시오.
페인팅 클래스
포팅 가이드에서 Qt Print Support 및 기타 인쇄 관련 클래스에 대한 정보는 QPagedPaintDevice 를 참조하십시오.
유틸리티 클래스
QIntValidator 및 QDoubleValidator
setRange() 메서드는 더 이상 가상으로 표시되지 않습니다.
OpenGL 클래스
Qt에 렌더링 기반으로서 Qt RHI가 도입됨에 따라 QOpenGL
접두사가 붙은 대부분의 클래스가 Qt OpenGL 모듈로 옮겨졌습니다.
자세한 내용은 Qt OpenGL 포팅 가이드에서 확인할 수 있습니다.
한 가지 주목할 만한 예외는 QOpenGLContext 클래스로, Qt GUI 에 여전히 존재합니다.
또한 QOpenGLWidget 클래스는 Qt OpenGL 위젯이라는 새 모듈로 이동되었습니다.
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로 자동 폴백되지 않습니다. QWindow 또는 QWidget 기반 애플리케이션의 경우, 예를 들어 QOpenGLWidget 을 통해 OpenGL을 직접 사용하는 경우 런타임에 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는 플랫폼별 또는 사용자 정의 클립보드 형식을 Qt에 통합하기 위한 인터페이스를 QtMacExtras
의 QMacPasteboardMime
과 Windows QPA API의 QWindowsMime
를 통해 제공했습니다. Qt 6.6부터는 macOS용 QUtiMimeConverter 클래스와 Windows용 QWindowsMimeConverter 클래스에서 동일한 기능을 제공합니다.
가상 인터페이스가 동일하기 때문에 QWindowsMime에서 QWindowsMimeConverter 로 포팅하는 것은 거의 변경할 필요가 없습니다. 그러나 Qt 6에서는 더 이상 QWindowsMimeConverter 구현을 등록할 필요가 없으며, 유형을 인스턴스화하면 변환기가 암시적으로 등록됩니다.
QMacPasteboardMime을 QUtiMimeConverter 로 포팅하려면 일부 가상 함수의 이름을 바꿔야 합니다. QMacPasteboardMime
API는 macOS의 기본 클립보드 형식에 대해 오래된 용어 flavor
을 사용했지만, 이제 플랫폼은 Uniform Type Identifiers
, 즉 Qt가 함수 및 파라미터 이름에 적용한 UTI
을 사용합니다.
mimeFor
및 flavorFor
함수는 각각 mimeForUti 및 utiForMime 구현으로 대체됩니다. 이들은 변환기가 입력 형식을 변환할 수 있는 밈 유형 또는 UTI
의 이름을 반환해야 하므로, 포트는 일반적으로 기존 오버라이드의 이름을 바꾸는 것만 포함합니다. QUtiMimeConverter 의 convertToMime
, convertFromMime
, count
함수는 해당 QMacPasteboardMime 버전과 동일합니다.
canConvert
, converterName
함수는 더 이상 필요하지 않으며 위 함수의 구현에 암시되어 있으므로 해당 함수의 오버라이드를 제거할 수 있습니다.
QWindowsMimeConverter 와 마찬가지로 등록은 유형을 인스턴스화하여 수행됩니다.
© 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.