필자는 그동안 주로 C# 기반의 프로그램을 개발하였고 여러 형태의 GUI 개발을 해왔습니다.
그런 경험 때문에 Qt에서도 당연히 Widget을 여러개로 분류하고 필요에 따라서 조합하여 사용하는 것을 당연하다고 생각했습니다. 하지만, Qt에서는 이런 개발 방식에 매우 불편하고 친절한 tutorial 이 없는 것 같습니다.
그래서 이번에는 Qt 를 이용하여 사용자의 Custom Widget을 적용하는 방법에 대해 공부한 것들을 개인적으로 정리하면서 필요하신 분들에게 공유하고자 부족한 내용이나마 연재하고자 합니다.
우선 공식 문서에 따르면 Qt에서 Custom Widget을 만드는 방법은 Promotion 과 Plugin 방식으로 두가지로 접근이 가능합니다.
1. Promotion 방식
우선 Promotion 의 방식은 Widget의 클래스를 CustomWidget의 클래스로 Promotion(승격) 시켜서 참조 클래스를 변경하여 사용하는 것입니다. 이 방식은 간단하지만 Qt Designer에서 화면 구성을 확인 할 수가 없습니다.
그냥 빈 widget 으로 표시되고 runtime에서 그려지는 방식입니다.
이 방식의 예제는 이전에 Vtk 의 renderwindow를 Qt의 Opengl widget에 넣어서 출력하는 방법을 설명한 내용입니다.
참고 : QtWidget에 Vtk RenderWindow 설정하기
2. Plugins 방식
Plugin 방식은 기본적으로 새로운 Plugin 프로젝트를 만들어서 클래스 라이브러리로 로드해서 사용하는 방식입니다.
이 방식의 장점은 Promotion 방식과 달리 Widget의 모습을 그대로 designer에서 확인할 수 있고, 사용하는 방식도 Qt base widget과 같이 사용할 수 있습니다. 이 방식이 개발자들이 기본적으로 생각하는 custom widget의 방식일 것입니다.
앞으로 이어지는 tutorial 에서 Plugin 방식을 활용하여 직관적으로 UI 를 디자인하고 사용하는 방법을 설명하도록 하겠습니다.
참고 : Using Custom Widgets with Qt Designer | Qt Designer Manual