와 함께 사용자 정의 위젯 사용 Qt Widgets Designer

Qt Widgets Designer 는 확장 가능한 플러그인 메커니즘을 통해 사용자 정의 위젯을 표시할 수 있으므로 사용자 및 타사에서 디자인 가능한 위젯의 범위를 확장할 수 있습니다. 또는 기존 위젯을 유사한 API를 제공하는 위젯 클래스의 플레이스홀더로 사용할 수도 있습니다.

사용자 정의 위젯 처리하기

Qt Widgets Designer 는 모든 표준 Qt 위젯을 지원하지만, 일부 특수 위젯은 여러 가지 이유로 표준으로 제공되지 않을 수 있습니다:

  • 사용자 정의 위젯은 사용자 인터페이스가 설계되는 시점에 제공되지 않을 수 있습니다.
  • 사용자 지정 위젯은 플랫폼별로 다를 수 있으며, 디자이너가 최종 사용자와 다른 플랫폼에서 사용자 인터페이스를 개발할 수도 있습니다.
  • 사용자 지정 위젯의 소스 코드를 사용할 수 없거나 사용자 인터페이스 디자이너가 기술적이지 않은 이유로 위젯을 사용할 수 없는 경우.

위와 같은 상황에서도 애플리케이션에서 사용자 지정 위젯을 사용할 목적으로 양식을 디자인할 수 있습니다. 이를 위해 Qt Widgets Designer 의 위젯 프로모션 기능을 사용할 수 있습니다.

다른 모든 경우에는 사용자 정의 위젯의 소스 코드를 사용할 수 있는 경우 Qt Widgets Designer 에서 사용하도록 사용자 정의 위젯을 조정할 수 있습니다.

위젯 프로모션

일부 양식을 디자인해야 하지만 디자이너가 특정 사용자 정의 위젯을 사용할 수 없는 경우 유사한 위젯을 대체하여 누락된 위젯을 나타낼 수 있습니다. 예를 들어, 사용자 정의 푸시 버튼 클래스인 MyPushButton 의 인스턴스를 QPushButton 의 인스턴스로 표현하고 이를 MyPushButton 로 승격하여 uic가 이 누락된 클래스에 적합한 코드를 생성하도록 할 수 있습니다.

플레이스홀더로 사용할 위젯을 선택할 때는 누락된 위젯의 API를 표준 Qt 위젯의 API와 비교하는 것이 유용합니다. 표준 클래스를 서브 클래스하는 특수 위젯의 경우, 플레이스홀더의 확실한 선택은 사용자 정의 위젯의 기본 클래스입니다(예: QSlider 는 특수 QSlider 서브 클래스에 사용될 수 있습니다).

표준 Qt 위젯과 공통 API를 공유하지 않는 특수 위젯의 경우 Qt Widgets Designer 에서 사용하도록 사용자 정의 위젯을 조정하는 것이 좋습니다. 이것이 불가능하다면 모든 위젯의 가장 낮은 공통 분모이므로 QWidget 이 플레이스홀더 위젯으로 확실한 선택입니다.

플레이스홀더를 추가하려면 적절한 기본 클래스의 개체를 선택하고 양식의 컨텍스트 메뉴에서 다음으로 승격...을 선택합니다. 대화 상자 아래쪽에 클래스 이름과 헤더 파일을 입력한 후 추가를 선택합니다. 이제 플레이스홀더 클래스가 위쪽 목록에 기본 클래스와 함께 나타납니다. 승격 버튼을 클릭하여 이 선택을 수락합니다.

이제 양식의 컨텍스트 메뉴가 기본 클래스의 개체 위에 열리면 플레이스홀더 클래스가 하위 메뉴로 승격에 나타나므로 개체를 해당 클래스로 편리하게 승격할 수 있습니다.

승격된 위젯은 양식의 컨텍스트 메뉴에서 강등을 선택하여 기본 클래스로 되돌릴 수 있습니다.

사용자 정의 사용자 정의 위젯

사용자 정의 위젯은 Qt Widgets Designer 에서 사용하도록 조정할 수 있으므로 디자이너는 플레이스홀더 위젯이 아닌 애플리케이션에서 사용될 실제 위젯을 사용하여 사용자 인터페이스를 구성할 수 있습니다. 사용자 정의 위젯 플러그인을 만드는 과정은 이 매뉴얼의 Qt Widgets Designer 에 대한 사용자 정의 위젯 만들기 장에 설명되어 있습니다.

이렇게 만든 플러그인을 사용하려면 Qt Widgets Designer 에서 플러그인을 검색하는 경로에 플러그인이 있는지 확인해야 합니다. 일반적으로 $QTDIR/plugins/designer 에 저장된 플러그인은 Qt Widgets Designer 이 시작될 때 로드됩니다. 플러그인 빌드 및 설치에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 플러그인 생성에 대한 정보는 플러그인 HOWTO 문서를 참조할 수도 있습니다.

© 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.