QT/Tutorials

4. Main Window and Action

모래반지빵냐빵냐 2015. 4. 14. 14:20

이번엔 메인윈도우 클래스의 메뉴와툴바의 액션을 어떻게 설정하는지에 대해서 알아볼꺼임


Qt_QMainWindowArea_MenuBar_ToolBar_DockWindow_CentralWidget_StatusBar.png

음 위그림은 왜 대략적인 구조도인듯


QtGuiApplication.pngProjectManagement.png


아무튼 GUI 어플리케이션 프로젝트를 하나 만듬

ActionWindow.png

ui 부분에 가서 Type here에 file이라고 치고 

다음 하위 메뉴에 New Window 라고 치고 엔터!를 하면 아주 간단한 메뉴가 만들어짐

그런면 밑에 Action editor에 붉은색으로 메뉴가 하나 더 뜰것임 그것이 바로 New Window를 클릭했을때 어떻게 행동할 것인가를 처리하는 부분인듯 ?

DragAndDrop.png

이다음엔 Action editor에 있는 아이템을 끌어다가 붉은색 표시된 곳으로 드래그엔 드롭을 하면 메뉴바가 하나더 추가됨 

이렇게 하면 매뉴바의 2가지 버튼이 한가지액션을 공유하게 됨

RightMouseOnActionEditor.png

이제 액션 에디터에서 그림처리 Go to slot을 해서 이 메뉴들이 선택되었을때 어떤 액션을 취할 것인가를 지정해 주면됨GoToSlotTriggered.png

triggered()를 선택


그렇게 되면 위와 같은 소스코드가 자동적으로 생성되게 됨 이제 메뉴를 누르면 위의 함수가 실행되는것임

RunActionA.png 

그리고 실행해보면 이런창이 띄지만 별 기능은 없음

하지만 메뉴를 누를떄마다 

MainWindow::on_actionNew_Window_triggered()요 함수가 실행되고 있는거임



여기까지가 이제 메뉴바에 버튼을 추가하는 부분까지 이고 아래부터는 버튼을 눌렀을때 새로운 창을 띄우는 걸 해보겠음

가장 단순한 윈도우 창을 다이얼로그라고 부르는데 메인 다이얼로그가 새로운 다이얼 로그를 생성할때 메인 다이얼로그와 서브 다이얼로그가 동시에 제어가 되냐 안되냐에 따라서

Modal , Modaless로 나뉘게 됨. 모달은 메인이 제어가 안되고  modaless는 동시에 제어가 가능함.

고럼 모달부터 시작해보겠음. 

MyDialog.png 

일단 프로젝트에다가 오른 클릭해서 project->Add New->Qt->Qt Designer Form Class->Dialog without Buttons

FilesInTheProject.png 

추가하면 이렇게 다이얼로그 클래스가 추가가됨


그리고 mainwindow.cpp에 다음과같이 추가하면  새창띔 


Modaless 다이얼로그를 만들기 위해서 기존의 코드는 주석처리해주고


아래와 같이 코드를 바꿔보면 코드를 실행해서 버튼을 누르자마자 창이 꺼질거임 


이게 왜그러냐면 트리거 함수가 끝나면서 다이얼로그 메모리가 해제 되버리기때문임

고래서 요렇게

요렇게 하면 하면 Modaless 다이얼로그 생성됨

-끝-