2강에서 Qt VS Tools의 template 프로젝트를 이용하여 widget plugin프로젝트를 만들었습니다.
이번 강의에서는 Widget 프로젝트를 Qt Designer 에서 활용하는 방법과 주의점을 설명하겠습니다
1. App 프로젝트 만들기
Custom Widget을 띄울 application 프로젝트를 QtWidgetTutorial 솔루션에 추가하여 생성합니다.
그림 순서대로 따라하면 됩니다.
Qt WidgetApplicaiton 에서는 Base class를 3가지 형태로 제공하는데 간단하게 QDialog 로 만들었습니다.
QMainWindow나 QWidget 어느 형태여도 상관은 없습니다.
프로젝트 생성을 완료하면 다음과 같은 파일 구조를 만들게 됩니다.
2. CustomWidget 등록하기
2강에서 설명한 방법을 기억해보면 Dynamic dll 형태로 plugin library 를 만들었습니다. 이제 dll output 파일을 Qt Designer에서 plugin으로 등록할 수 있도록 해야합니다.
dll 파일은 저의 기준으로 솔루션의 x64 폴더에 Debug/Release subdirectory로 각각 저장됩니다.
여기에서 중요한 것은 designer에서는 release 모드의 dll 만 사용할 수 있습니다.
우선 release 모드에서 나온 QtMyWidget.dll 파일을 Qt의 설치 경로에 맞춰서 plugin 폴더의 designer 하위 폴더에 복사합니다. 기본 경로에 설치하였다면 다음과 같은 경로에 넣어 주면 됩니다.
C:\Qt\6.2.1\msvc2019_64\plugins\designer |
그리고 designer를 실행해서 plugin이 잘 등록되었는지 확인합니다.
위젯 상자의 하단에 만들었던 위젯이 표시됩니다.
만약에 plugin 이 보이지 않는다면 Designer의 도움말->플러그인 정보 에서 오류가 없는지 확인합니다.
플러그인 정보 창을 보면 불러온 플러글인에 추가한 QtMyWidget.dll 이 잘 등록되어 있습니다. 그리고 아래를 보면 위에서 언급한대로 debug 모드로 생성한 QtMyWidgetd.dll 은 실패한 플러그인으로 나옵니다.
Designer에서는 release 모드의 plugin과 debug 모드의 plugin을 함께 쓰지 못하기 때문입니다.
이것은 designer의 제한점일 뿐 개발 환경의 debugging dll 을 사용하는 것은 상관 없습니다.
3. CustomWidget 불러오기
이제 등록한 Widget을 application 에서 불러오겠습니다.
QtMyApp 에 추가되어 있는 QtMyApp.ui 파일을 실행하고 QtMyWidget 을 화면에 끌어옵니다.
엇.. 그런데 그림을 보면 widget의 화면에 아무것도 표시가 되지 않고 있습니다.
객체 탐색기에서 QtMyAppClass 에서 마우스 우클릭하고 배치->수직으로 배치를 클릭합니다.
그러면 화면에 앞에서 만들었던 widget들이 모두 표시되었습니다.
이유는 plugin 에서 만든 widget들의 위치가 고정 위치로 지정되어 있기 때문에 처음에 불러온 widget의 영역에 그려지지 않아서 입니다.
이런 부분을 보완 할 수 있는 방법에 대해서는 DesignerCustomWidgetInterface 에 대해 세부 내용을 다루면서 진행하도록 하고 다음 강의에서는 Application 프로젝트에 대해 계속 진행하겠습니다.