본문 바로가기
C++ 200제/코딩 IT 정보

[Qt프로그래밍] QToolBar(툴바)에 QComboBox(콤보박스) 추가 예제

by vicddory 2018. 7. 7.

[Qt프로그래밍] QToolBar(툴바)에 QComboBox(콤보박스) 추가 예제


Qt MainWindow에 추가한 툴바에는 action 요소만 삽입됩니다. Qt Designer에서는 QToolBar에 action 요소 외의 다른 위젯은 추가할 수 있는 메뉴를 지원하지 않는 게 원인입니다.


그래서 Qt 디자이너에서는 콤보박스(QComboBox) 등 위젯을 추가하지 못하니 소스 코드에서 직접 위젯을 추가해야 합니다. 코드로 추가 / 삭제를 해야 한다는 의미인데, 이 포스트에서는 QToolBar에 위젯 중 하나인 QComboBox를 추가하는 예를 소개합니다.


우선 Qt Designer에서 Form을 생성합니다.


Qt QToolBar 예제 콤보박스[Python pyqt5에서도 적용 가능]


저는 이 예제에서 Main Window를 선택했습니다.


다른 폼을 선택해도 구현해야 할 소스 코드는 똑같으니 어떤 걸 선택해도 사실 상관없습니다.


Qt 프로그래밍 예제 툴바 QToolBar[Python pyqt5에서도 적용 가능]


Qt 디자이너에서 메인 윈도우를 추가하면 바로 위와 같은 초기화면을 확인할 수 있습니다.


이제 QToolBar를 추가해야 하는데 Qt 디자이너 왼쪽의 위젯창엔 이 메뉴가 따로 없습니다.


그러니 아래 그림처럼 폼 아무 곳에서 마우스 오른쪽 클릭하여 새 메뉴를 띄운 다음 "Add Tool Bar"를 선택합니다.


Qt 예제 QComboBox 추가[Python pyqt5에서도 적용 가능]


아래처럼 QToolBar 툴바가 추가된 것이 확인됩니다.


Qt QToolBar QComboBox 예제[Python pyqt5에서도 적용 가능]


이 포스트의 목적은 QComboBox를 추가하는 것이기에 Action 제어는 생략합니다.


이제는 Qt Designer에서의 작업은 끝내고, 직접 소스 코드를 구현합니다.

툴바에는 action 요소가 삽입될 수 있기에 콤보박스 앞에 공백(QWidget())을 주는 것이 좋겠죠? 그래서 아래 소스는 spacer를 삽입하고 그 뒤에 콤보박스를 추가하는 예입니다.


spacer는 QWidget()을 이용합니다.


1
2
3
4
5
6
7
8
9
QWidget* spacer = new QWidget();
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
 
QComboBox *test_box = new QComboBox();
test_box->addItem("Page1");
test_box->addItem("Page2");
test_box->addItem("Page3");
 
ui.toolBar->addWidget(test_box); // QToolBar에 추가
cs


소스는 간단합니다.


1, 2번 라인에서 선언한 QWidget()은 spacer로 사용하기 위해 단순히 정렬만 맞추는 용도로 그칩니다.

4번 라인에서 QComboBox 객체를 만들고 아이템 3개를 추가합니다.

9번 라인에서 툴바에 위젯을 추가하는데 그것은 4번 라인에서 선언한 콤보박스(QComboBox)입니다.


아래는 결과 화면입니다.


Qt 툴바 콤보박스 예제[Qt 프로그래밍 예제 결과]


이런 형태로 대부분 위젯을 Qt 툴바에 추가할 수 있습니다.


[Qt프로그래밍] QToolBar(툴바)에 QComboBox(콤보박스) 추가 예제

댓글