mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-03-28 00:11:39

Qt(프레임워크)

파일:Qt_logo_2016.svg
1. 개요2. Qt 6 지원 플랫폼
2.1. Qt 공식 지원 플랫폼2.2. 그 이외 지원 플랫폼
3. 라이선스/서포트 정책4. Qt 라이선스 비용5. The Qt Company6. Qt Creator7. QML8. 타 언어로의 바인딩
8.1. Python Binding for Qt
8.1.1. PyQt6 설치 방법8.1.2. PySide6 설치 방법
8.2. Qt binding for Go (Golang)8.3. 기타 언어
9. 문서와 커뮤니티
9.1. 공식 문서9.2. 커뮤니티
10. Qt가 사용된 애플리케이션 / 플랫폼11. 기타


* 홈페이지 : https://www.qt.io/
* 페이스북 : https://www.facebook.com/qt
* 인스타그램 : https://www.instagram.com/theqtcompany
* 유튜브 : https://www.youtube.com/user/QtStudios

1. 개요

Qt 원래는 'Trolltech'라는 노르웨이 회사였으나 2008년 노키아에 인수된 이후 핀란드 국적 회사로 바뀌었다. 다시 독립된 회사가 된 지금도 본사는 핀란드 에스포에 있다. C++을 주 언어로 사용하는 GUI 프레임워크. '큐트'라고 읽는다. C++와 QML이라는 자체 스크립트 언어를 기반으로 한다. 2024년 3월 기준 현재 최신 버전은 Qt 6.6.3와 Qt Creator 12.0.2이다. https://download.qt.io/archive/qt/

"Write once, compile anywhere"[1]를 광고 문구로 사용하고 있으나 해외에서 데스크탑 크로스플랫폼 앱 일부에서 사용하는 정도다. 임베디드 쪽에서도 일부 사용된다고 광고를 하고 있으나 반도체사에서 공급하고 있는 임베디드 솔루션 쪽에서는 사용되는 경우가 없으며 C++ 개발로 한정하지 않는다면 타사의 크로스 플랫폼 프레임워크등 경쟁 프레임워크에 밀리고 있다.

초기에는 크로스플랫폼 GUI 라이브러리로 시작했고 UI 개발 도구, 번역 작업을 위한 도구와 C++ 개발에 필요한 많은 기능(UI, XML, 네트워크, SVG, Animation, Container Class 등등)을 제공하는 범용적인 응용프로그램 프레임워크가 되었다. 코드 베이스가 상당히 거대해지고 복잡하고 특히 국내에서는 사용자가 거의 없어 출시된 서적도 전무하다.[2] 미리 빌드된 라이브러리를 사용하지 않고 소스코드를 직접 빌드 할 때, 별도의 옵션 없이 기본값으로 빌드하는 경우 빌드시간이 오래 걸리는 것과 타 프레임워크들에 비해 다소 큰 바이너리가 생성될 수 있다. [3]

2. Qt 6 지원 플랫폼

2.1. Qt 공식 지원 플랫폼

Qt 6.6 기준. 다른 버전, 대응 컴파일러를 비롯한 자세한 내용은 https://doc.qt.io/qt-6/supported-platforms.html를 참조.

2.2. 그 이외 지원 플랫폼

이외에도 Qt Company, 다른 개발사, 오픈 커뮤니티 등에서 공식/비공식으로 지원 가능한 플랫폼이 존재한다.
참조 http://doc.qt.io/qt-5/supported-platforms.html

3. 라이선스/서포트 정책

라이선스 비교는 http://www.qt.io/licensing-comparison/를 참조할 것.

Qt 6.2 현재

4. Qt 라이선스 비용

공식 기술지원이 없는 커뮤니티 라이센스의 경우 무료로 사용가능하나 Qt 라이브러리의 대부분이 LGPLv3이고 Qt Charts와 같은 모듈은 소스코드를 공개해야하는 GPL 라이센스를 사용한다. LGPL 및 GPL에 해당되는 모듈은 해당 라이센스 의무사항이 있으므로 검토 후에 사용하자. 오픈소스 라이센스 조항을 지키고 싶지 않거나 기술지원을 받으려면 상업용 Qt 라이센스를 구입하여야 하며 회사의 사업(매출, 직원 수)규모에 따라 다를 수 있으므로 직접 문의해보거나 마켓플레이스에서 견적을 내볼 수 있다.

참고로 2020년 3월 26일부터 Qt 스몰 비즈니스 라이센스는 데스크톱/임베디드/모바일 불문하고 연간 499달러이며 스몰 비즈니스 책정 한계는 10만 달러에서 25만 달러로 변경되었다.

5. The Qt Company

원래 트롤텍이라는 회사에서 개발했으나 노키아가 트롤텍을 인수한 이후에는 노키아에서 관리하였으며, 2012년 8월 9일 Digia에게 넘어갔다. 2014년 The Qt Company라는 이름으로 Digia 자회사로 독립하였다.

==# Qt 4 vs Qt 5 #==
2022년 6월 기준 공식적으로 지원하는 메이저 버전은 Qt 5, 6이다. Qt 4는 2015년 12월 이후 신규 클라이언트를 받지 않고 있으며 고객 지원도 종료되었다.

Qt 4와 Qt 5는 개발 이념에 상당한 차이가 있다.

Qt 4
Qt 4.5 이후
Qt 개발사였던 트롤텍이 노키아에 합병된 이후 노키아의 플랫폼에 Qt를 전면으로 내세움에 따라 개발 전략이 급격히 바뀌게 된다.
* 전면적인 LGPL의 도입
* 심비안 / 미고의 플랫폼용 API로 완전 커버
* 모바일에 최적화된 UI 개발
* Python Binding인 PySide
* IDE인 QtCreator 개발 전폭 지원
하지만 3년도 되지 않아 노키아가 Qt 중심의 플랫폼 전략을 철회하고 Qt 개발팀을 Digia사에 매각한다. 이에 따라 모든 개발 로드맵은 취소 혹은 전면 수정된다. 유일한 이득은 LGPL 라이선스와 Qt Creator(IDE 기반의 개발 환경) 그리고 QML.

Qt 5

Qt 5.5
2015년 7월 1일 릴리스 되었다.
Qt 5.6
2016년 3월 16일 릴리스 되었다.
Qt 5.7
2016년 6월 16일 정식 릴리스 되었다. 5.6이 나온지 3개월밖에 안됐는데 벌써 나왔다.
Qt 5.8
2017년 1월 23일 정식 릴리즈 되었다.
Qt 6.0
2020년 12월 8일 정식 릴리즈 되었다.
자세한 내용은 https://www.qt.io/blog/qt-6.0-released를 참조할 것

Qt 4에서 Qt 5로 이전
Qt 5는 Qt 4와의 바이너리 호환성, 소스 호환성 모두 공식적으로 지원하지 않는다. 하지만 몇몇 코드를 수정함으로써 간단히 Qt 5로 이전 가능하다. 자세한 내용은 https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5를 참조할 것.
주로 변경할 6가지 사항은 https://qiita.com/yasumodev/items/b304966f6999fbea920d를 참조하며, 이는 리눅스 / 윈도우 공통 사항이다. 특히, Qt4 프로젝트를 연동할 때, greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 이 부분은 잊지 말고 꼭 넣어주도록 하자.
==# Qt 5 모듈 구성 #==
Qt 5는 개발 정책, 라이선스에 따라 몇 가지 카테고리로 나누어져 있다.

Qt Essentials
위 항목의 공식 지원 플랫폼을 모두 지원하는 표준 모듈

Qt Add-Ons
지원하는 플랫폼에 제한이 있음. 향후 공식 플랫폼을 모두 지원할 경우 Qt Essential이 될 수 있음.

Value-Add 모듈
상용 라이선스에서 사용하는 추가 모듈들. 오픈소스가 아님.

Technology Preview 모듈
현재 개발 / 리뷰 중인 모듈. 오픈소스로 개발이 진행됨.

Qt Tools
Qt 개발 생산성을 높이기 위한 툴들

6. Qt Creator

Qt 프레임워크 개발을 위한 통합 개발 환경.

Visual Studio(2022)용 플러그인도 존재하는데, 이 플러그인은 그저 Visual Studio에서 Qt를 쓸 수 있게 환경을 만들어주는 것이고 기본적으로는 Qt 자체가 미리 설치되어 있어야 한다. 여기에서 official_releases/ → online_installers/ → 각 OS에 맞는 실행 파일을 클릭해 통합 인스톨러를 다운받고 상용 라이선스를 사용하고 싶다면 해당 라이선스가 활성화된 계정으로, LGPL 라이선스를 사용하고 싶다면 무료 계정으로 로그인하거나 비로그인 상태로 진행하면 된다.

설치가 끝나면 Qt를 Visual Studio와 연동시켜야 한다. 우선 Qt를 설치할 때 같이 깔리는 Qt Creator를 실행한 후, Tools → Options → Build & Run → Qt Versions 탭으로 들어간다. 'Auto-Detected' 항목 아래의 Qt 버전을 클릭하면 밑에 버전의 이름 및 qmake의 경로가 표시된다. 그리고 Visual Studio 2022에서 Qt 플러그인을 설치한 뒤 상단의 Qt VS Tools → Qt Options → Qt Versions로 들어간 다음, 'Add'를 누르고 방금 Qt Creator에서 확인한 버전 이름과 qmake 경로의 \\bin 이전까지를 입력하면 연동이 완료된다.

7. QML

QML (Quick Markup Language)은 JavaScript 엔진 위에서 돌아가며, GUI 디자인에 특화된 배우기도 쉽고 사용하기도 쉬운 선언형 언어이다. 기본적으로 문법은 JSON과 유사하며 동적인 요소는 JavaScript로 작성하게된다. 또한 C++ 컴포넌트와 긴밀한 통합 및 확장이 가능하다. 예를들어, C++에서 선언된 객체의 함수를 QML에서 호출할 수 도 있고 C++로 작성한 모델을 QML에서 선언할 수도 있다. QML만으로 전체 애플리케이션을 작성할 수 도있지만 UI과 직접적인 관련이 없는 기능들[4]은 C++에서만 구현이 가능한 경우가 많기 때문에 일반적으로 웹으로 비유할때 백엔드는 C++에서 프론트엔드는 QML이 담당하게된다. QT(QML)로 래핑되지 않은 모듈은 해당 플랫폼의 네이티브 코드로 직접 플러그인을 만들 수 도 있다.

QML의 큰 특징중 하나는 바인딩 이다. C++ 또는 QML에서 선언된 Property는 QML에서 바인딩이 가능하다 [5] 바인딩이되면 Property의 값이 바뀔때마다 해당 블럭이 리프레쉬 되어 봅잡한 코드 없이 값을 최신 상태로 유지가 간편하다. 다만, 블럭 내부의 Property가 하나만 바뀌어도 블럭의 전체 문단이 리프레쉬 되어 봅잡한 바인딩은 성능 저하의 주범이되고 무한루프도 발생시킬 수 있으므로 바인딩에만 의존하는건 좋지 않다.

여담으로 QML은 배우기도 쉽고 쓰기도 쉽고 가독성도 좋고 생산성도 좋은건 사실이지만, 막상 유지보수는 의외로 좋지 않다. 문제점은 정확히는 QML 언어가 아닌 코드 편집 기능의 문제 겠지만 코드 자동 완성기능 수준도 매우 낮고 일정 규모의 프로젝트가 되면 QML만으로 전체 프로그램을 작성하는것은 어려워서 C++을 같이 사용할 수 밖에없는데 코드 리팩토링이 필요할 경우가되면 C++과 QML를 따로 리팩토링 해야한다... 심지어 QML의 리팩토링 자체도 좋지 않다. 이 부분은 개선이 필요한 부분이다.

8. 타 언어로의 바인딩

8.1. Python Binding for Qt

파이썬 바인딩으로 PyQt와 PySide가 주로 사용된다.

PyQt는 GPL과 동시에 상업적 사용 혹은 GPL을 벗어난 사용을 원하는 사람을 위한 상용 라이선스를 판매하고 있으며, PySide는 LGPL, GPLv2, 상용 라이선스를 복수 사용하고 있다. 사실 초기에는 PySide가 없었고 PyQt만이 존재했었다. 그래서 당시 Qt의 저작권자였던 노키아가 PyQt의 개발사인 Riverbank Computing에게 자사와의 제휴와 더불어 PyQt의 저작권을 Qt 원본처럼 LGPL로 변경할 것을 제안했으나 거절당했고[6] 이에 노키아가 직접 Python용 Binding을 하나 더 제작하기로 결정해서 탄생한 것이 PySide다. 이후 Qt Company가 노키아로부터 분리될 때 PySide에 대한 권리까지 같이 승계되어서 지금까지 내려오고 있다.

Qt Company가 2016년 4월 부로 PySide 프로젝트를 공식 지원하겠다고 발표했다.
프로젝트의 목표는 PySide2가 Qt5 프레임워크의 일부로서 동시에 릴리즈되는 것이라고 한다.[7] Python으로 Qt 개발한다고 하면 PyQt부터 시작하는 편이어도, 차후에는 PySide가 메인이 될거라고 전망했지만[8], 2022년 현재까지도 PyQt 쪽이 구글에서 얻을 수 있는 정보가 압도적으로 많다. pip로 설치된 패키지의 바이너리의 크기도 PyQt 쪽이 작아, 배포판의 크기를 줄여야 한다면 GPL 라이센스의 압박만 아니면 이쪽이 더 유리하다.[9]

8.1.1. PyQt6 설치 방법

PyPI로 설치하는 방법
pip install PyQt6

그런데 브라우저를 구현하기 위해서는 pyqtwebengine을 따로 설치해야 한다. 반드시 PyQt6를 설치한 이후 pyqtwebengine을 설치해야만 한다. 방법은 다음과 같다.
pip install pyqt6
pip install pyqtwebengine

이미 한 번 다운로드했으면 uninstall하여 지우고 다시 설치할 때 뒤에 --upgrade 옵션을 붙여주면 된다.
anaconda를 사용할 시 다운방법은 다음과 같다.
conda install pyqt6

그런데 anaconda를 사용해도 pip로 설치하는 것이 좋다. 왜냐하면 일단 anaconda에서는 pip보다 훨씬 버전이 낮은 pyqt를 지원하는데다가 호환성문제 검사한다고 다운로드 시간이 길다. 그리고 pyqtwebengine이 실행이 되지 않는다.

8.1.2. PySide6 설치 방법

PyPI로 설치하는 방법
pip install PySide6 # For the latest version on PyPi

8.2. Qt binding for Go (Golang)

8.3. 기타 언어

Node.js용 바인딩으로 nodegui가 있다. React를 UI 제작에 사용할 수도 있다. 다만 2019년에 시작된 프로젝트라서 지원되지 않는 컴포넌트도 많고, Node.js를 커스텀한 빌드를 사용하기 때문에 원래는 없는 문제가 생길 여지도 있다.

9. 문서와 커뮤니티

9.1. 공식 문서

API 레퍼런스, 튜토리얼 등의 문서가 아주 잘 구비되어 있다. (영어)
참고로 이렇게 잘 설명된 문서는 거의 찾아보기 힘들다. 상당히 직관적이어서 조금만 익숙해지면 상당히 깔끔하게 프로그래밍이 가능하다.
참고: 유튜브에는 VoidRealms이라는 아이디를 가진 개발자가 가장 기초가 되는 QT의 각 클래스들을 하나씩 하나씩 약 10분 내외의 짧은 영상으로 설명해 둔 것이 있다. 물론 영어로 되어 있지만 처음부터 코딩을 해나가면서 진행하기 때문에 영어가 조금만 되면 문제없이 이해할 수 있을 정도이다.

9.2. 커뮤니티

http://forum.qt.io/에서 Qt 관련 지식을 질의응답 가능하며 Stack Overflow에서도 질의응답이 활발히 이루어지고 있다.
한국어 커뮤니티는 https://wiki.qt.io/Main/ko http://qt-dev.com/, http://korone.net/이 있다.

10. Qt가 사용된 애플리케이션 / 플랫폼

찾기 쉽게 알파벳 / 가나다순으로 정리했다.

11. 기타

2015년 5월 20일자로 Qt 20 주년을 맞이하였다. https://blog.qt.io/blog/2015/05/20/happy-20th-anniversary-qt/

Qt Company 서울 오피스가 있다. 일본의 경우 Qt Company Japan 오피스와 파트너사인 SRA가 분담해서 업무를 맡고 있다.

초보자들을 위해 Qt Designer라는 위지위그 방식 툴이 있다. 저장될 때는 .ui 방식으로 저장되며, 이 .ui 방식을 소스 파일에서 loadUi하며 실행하는 방식이다.

파이썬으로 GUI를 짜는데 외부 라이브러리들[12]이 사용감이 후지다면 그냥 PyQt로 UI를 드래그 앤 드롭으로 배치하고 소스를 파이썬 연동으로 출력한 다음, 본래 기능이랑 이어주면 끝이다. 그래서 C++ 오픈소스지만 파이썬으로도 많이 쓰는 편이며, 파이썬 사용자가 늘어나면서 PyQt를 이용하는 사람도 점점 늘어나고 있다. 그리고 윈도우, 리눅스, MacOS 등 OS에 구애받지 않기 때문에 여러 곳에서 사용이 가능하다. 또한 유서깊은 툴킷이므로 커뮤니티가 매우 잘 발달되어 있어 유튜브, Qt 커뮤니티, 스택 오버플로우에서 관련 정보를 획득하는 것이 쉽다.

이외에도 다른 언어를 활용하기가 쉬운데 QWidget을 상속한 모든 클래스에서 setStyleSheet를 이용해서 css 파일을 사용하여 편집할 수 있다는 강력한 장점이 있다. 또한 웹엔진을 깔았을 때 자바스크립트와도 연동이 가능하다.

단점이 있다면 프레임리스 윈도우(self.setWindowFlags(Qt.FramelessWindowsHint)로 구현 가능) 관련해서 지원을 잘 못해준다. 특히 윈도우즈 환경에서 그렇다. 크롬이나 에지, 스팀과 같은 프로그램을 보면 메모장처럼 기본적인 타이틀바를 지원해주지 않고 커스터마이징 된 타이틀바를 지원해주는데 이 타이틀바를 이동하거나 리사이즈할 경우 프레임이 생긴다. 그런데, Qt 프레임리스 윈도우는 기본적으로 리사이즈 불가능, 이동 불가능이다.

이동은 프레임 유무 따지지 않고 mousePressEvent 등의 마우스 이벤트를 적절히 활용하면 구현이 그렇게 어렵지 않고, 커서 모양 변경 또한 어렵지 않으나 문제는 리사이즈이다. Qt에서 제공하는 QMainWindow 혹은 QDialog 전용 사이즈 조절 기능을 지닌 QSizeGrip은 오른쪽 아래 방향으로만 조절 가능한데다가 워낙 올드해서 요즘은 사용하지 않기 때문에, 직접 리사이즈 기능을 만드는 수밖에 없다. 오른쪽, 아래쪽 사이즈 조절은 self.rect().setRight()나 setBottom()을 이용하면 그렇게 어렵진 않으나 문제는 왼쪽 혹은 위쪽이다. 왼쪽 혹은 위쪽으로 사이즈 조절 시 윈도우가 오차로 인해 조금씩 덜덜 떨리는 현상이 관측된다. 이것은 서양 Qt 커뮤니티에서 상당한 화두이다. qrc로 이것을 해소할 수 있기는 하나 qrc가 아니라 qt만으로 이것을 해소하는 것은 아직은 요원해 보인다.

프레임리스 타이틀바가 아니라 커스텀 타이틀바 힌트를 줄 수도 있지만 이같은 경우 윈도우에서 꼭 위에 하얀색 띠가 나온다. 이 타이틀바는 스타일을 전혀 바꿀 수 없다. 타이틀바 기능 지원이 윈도우 OS에 대해서는 macOS나 리눅스에 비해서 매우 조악한 편이며 Qt Documentation에도 윈도우 환경이 Qt를 잘 지원해주고 있지 않다고 설명되어 있다.

Qt 5.15 부터는 이 기능을 OS에 맞는 스타일로 제공해주는 startSystemMove와 startSystemResize 함수가 추가되어 이 부분을 어느 정도 해결하였다. Qt5의 5.15 미만에서는 이 기능을 지원해주지 않기에 업데이트가 필요하다. 커서 모양 바꾸기는 여전히 스스로 작업해야 한다.

또다른 단점은 다른 신형 소프트웨어 개발 툴킷에 비해서 UI가 현대화되어 있지 않다는 점이 있을 것이다. Qt 자체적으로는 윈도우 XP/7 시절의 디자인이 디폴트인 상태로 머물러 있다. QML/CSS/QGraphicsEffect/QPaintEvent 등 다양한 방식의 스타일링을 활용할 수 있다면 이 부분은 해결할 수 있지만 많은 것을 공부해야 하므로 Qt 스타일링은 진입장벽이 높다.

CSS 또한 전부 지원해주지 않는데, 애니메이션이나 함수를 지원해주지 않는다. 그러나 애니메이션 같은 경우는 QAbstractAnimation 등 자체 Qt 함수를 이용하여 대처할 수 있으나, CSS 리소스 파일과 스크립트 파일을 동시에 관리해야 하므로 혼란스러울 수 있다. 그리고 동적 CSS라 불리는 SASS와 같은 경우는 qtsass 등 다양한 패키지들을 이용하여 qt에 적절히 이용할 수 있다.
외국에서는 임베디드 분야에서 매우 각광받고 있고 데스크톱 소프트웨어에서도 여전히 굳건한 위치를 고수 중이다.[13] 소스코드를 몽땅 공개해야하는 GPL 프로그램에서도 GPL의 소스 공개 조항에 거리낌이 없다 보니 주로 쓰인다. 기본적으로 Qt는 데스크탑용 라이브러리로 시작했다 보니 모바일과 같은 플랫폼에 대한 지원은 상대적으로 좋은 편은 아니지만 Qt를 다루는 실력이 좋다면 사용해 볼 만하며, 웹과 연동된 소프트웨어도 잘 지원하는 편이나 Qt 전용 웹뷰 패키지를 따로 깔아야 한다는 것이 단점이기는 하다. 일단 한국의 SI시장의 경우 대부분 데스크탑용 프로그램 조차도 웹으로 개발하거나 아예 스탠드얼론이어도 일렉트론같은 사실상 별도의 브라우저를 띄우는 방식이고 네이티브 데스크탑 용으로 만드는 업체가 MFC로 만들어진 레거시 프로그램들의 유지보수를 제외하면 거의 없다 보니 Qt를 사용하는 업체가 외국에 비해서 상당히 희소한 편이다.

PyQt 생활코딩 페이지
PySide
PySide 한국어 번역(일부)


[1] 눈치챘겠지만 Java의 메인 슬로건인 "Write once, run anywhere"를 비튼 것이다. [2] 한국 특유의 한쪽으로만 쏠리는 점은 Qt에만 국한되는 문제가 아니긴 하지만... [3] wxWidgets이 Shared에서 15MB, Static에서 4MB이하, Nana가 3.4MB, JUCE가 10MB 이하인 것에 비하면 Qt는 126MB의 의존성이 필요하며 그에 따른 기본적인 메모리 점유율이 높은 편이다. 물론 C++가 아닌 프레임워크들이 브라우저 + Node.js들을 주렁주렁 달고 다니는 무거운 Electron.js React Native, Flutter들과 같이 웹 기술을 기반으로 하고 있는 프레임워크들에 비하면 훨씬 가벼운 편. Qt를 사용해서 가볍게 프로그램만 배포하려면 Qt에서 가장 큰 부분을 차지하고 있는 QtWebEngine을 제외하고 빌드하면 된다. [4] 예를들어 TCP/IP 또는 클라이언트에 연결된 하드웨어들을 제어하는 모듈은 QML에서 바로 사용할 수는 없고, C++ 객체를 만들어서 QML에서 Invoke를 하거나 QML 플러그인을 직접 만들어야한다. [5] Qt 6 부터는 C++에서도 바인딩을 사용할 수 있다. [6] 여기서 Riverbank사의 공식 입장을 확인할 수 있는데, GPL 라이선스를 고집하는 이유는 자유 소프트웨어 재단에서 주장하는 자유 소프트웨어 공동체로부터의 독점 소프트웨어 개발자들에 대한 압박 같은 것과는 관계 없이 오로지 현재로서는 PyQt 이외의 수익 모델이 없기 때문에 PyQt 상용 라이선스의 판매를 위해서라고 한다. [7] *nix 계열에서 데스크탑 앱을 개발하기가 한결 쉬워질 듯. [8] Christian Tismer( PyPy 개발자 중 한 명) : Well, PyQt is a different thing from Riverbank Computing and not connected to TQC. PySide will become the real thing. At least that is the plan ;-) [9] 예를 들어 PyQt6.2.3 및 PySide6.2.3에 포함되는 바이너리 중 QtGui.pyd, QtCore.pyd, QtWidgets.pyd의 크기의 합은 각각 7,415,680 bytes와 15,039,816 bytes이다. [10] 럼버야드가 먼저 MFC를 Qt로 대체해서 한달 먼저 공개됐는데 크라이엔진 5가 럼버야드를 보고 따라서 바꾼 것인지 원래 바꾸려고 했던 것인지는 알 수 없으나 Qt로 변경한 시점인 2016년을 생각하면 2015년에 업데이트를 중단한 MFC를 대체해야하는 일은 필수 불가결했을 것이다. [11] 원래 wxWidgets를 사용하였으나, Qt로 이전하였다. [12] Tkinter, PyGTK, wxPython 등이 있지만 PyQt, PySide가 가장 세련된 결과물을 보여준다고 평가받고 있다. Tkinter는 Python Foundation 공식 기본 라이브러리인데도 플랫폼에 따라서 레이아웃이 조금씩 변형되고, 그나마 멀쩡하게 출력되어도 모습이 투박한 등 못써먹을 물건 취급이다. [13] 크로스 플랫폼으로 제작해야 하는데, C++ 을 사용한 최적화가 필수적인 경우에 대해서 매우 유리한 위치에 있는 프레임워크이다. 다른 C++ 프레임워크들에 비하면 다루기 쉬운편이며, 소스를 공개한다면 무료라는점도 한 몫 한다. 소스를 공개하지 않는다고 해도 다른 프레임워크보다 크게 비싸다고 보기 어렵다.