문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Qt(프레임워크) (문단 편집) == 기타 == 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를 짜는데 외부 라이브러리들[* Tkinter, PyGTK, wxPython 등이 있지만 PyQt, PySide가 가장 세련된 결과물을 보여준다고 평가받고 있다. Tkinter는 Python Foundation 공식 기본 라이브러리인데도 플랫폼에 따라서 레이아웃이 조금씩 변형되고, 그나마 멀쩡하게 출력되어도 모습이 투박한 등 못써먹을 물건 취급이다.]이 사용감이 후지다면 그냥 [[http://sourceforge.net/projects/pyqt/|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에 적절히 이용할 수 있다. 외국에서는 임베디드 분야에서 매우 각광받고 있고 데스크톱 소프트웨어에서도 여전히 굳건한 위치를 고수 중이다. 소스코드를 몽땅 공개해야하는 GPL 프로그램에서도 GPL의 소스 공개 조항에 거리낌이 없다 보니 주로 쓰인다. 기본적으로 Qt는 데스크탑용 라이브러리로 시작했다 보니 모바일과 같은 플랫폼에 대한 지원은 상대적으로 좋은 편은 아니지만 Qt를 다루는 실력이 좋다면 사용해 볼 만하며, 웹과 연동된 소프트웨어도 잘 지원하는 편이나 Qt 전용 웹뷰 패키지를 따로 깔아야 한다는 것이 단점이기는 하다. 일단 한국의 SI시장의 경우 대부분 데스크탑용 프로그램 조차도 웹으로 개발하거나 아예 스탠드얼론이어도 일렉트론같은 사실상 별도의 브라우저를 띄우는 방식이고 네이티브 데스크탑 용으로 만드는 업체가 MFC로 만들어진 레거시 프로그램들의 유지보수를 제외하면 거의 없다 보니 Qt를 사용하는 업체가 외국에 비해서 상당히 희소한 편이다. [[https://opentutorials.org/module/544/4998|PyQt 생활코딩 페이지]] [[http://qt-project.org/wiki/Category:LanguageBindings::PySide|PySide]] [[http://qt-project.org/wiki/Category:LanguageBindings::PySide-Korean|PySide 한국어 번역(일부)]] [[분류:라이브러리]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기