4. Main Window and Action
이번엔 메인윈도우 클래스의 메뉴와툴바의 액션을 어떻게 설정하는지에 대해서 알아볼꺼임
음 위그림은 왜 대략적인 구조도인듯
아무튼 GUI 어플리케이션 프로젝트를 하나 만듬
ui 부분에 가서 Type here에 file이라고 치고
다음 하위 메뉴에 New Window 라고 치고 엔터!를 하면 아주 간단한 메뉴가 만들어짐
그런면 밑에 Action editor에 붉은색으로 메뉴가 하나 더 뜰것임 그것이 바로 New Window를 클릭했을때 어떻게 행동할 것인가를 처리하는 부분인듯 ?
이다음엔 Action editor에 있는 아이템을 끌어다가 붉은색 표시된 곳으로 드래그엔 드롭을 하면 메뉴바가 하나더 추가됨
이렇게 하면 매뉴바의 2가지 버튼이 한가지액션을 공유하게 됨
이제 액션 에디터에서 그림처리 Go to slot을 해서 이 메뉴들이 선택되었을때 어떤 액션을 취할 것인가를 지정해 주면됨
triggered()를 선택
그렇게 되면 위와 같은 소스코드가 자동적으로 생성되게 됨 이제 메뉴를 누르면 위의 함수가 실행되는것임
그리고 실행해보면 이런창이 띄지만 별 기능은 없음
하지만 메뉴를 누를떄마다
MainWindow::on_actionNew_Window_triggered()요 함수가 실행되고 있는거임
여기까지가 이제 메뉴바에 버튼을 추가하는 부분까지 이고 아래부터는 버튼을 눌렀을때 새로운 창을 띄우는 걸 해보겠음
가장 단순한 윈도우 창을 다이얼로그라고 부르는데 메인 다이얼로그가 새로운 다이얼 로그를 생성할때 메인 다이얼로그와 서브 다이얼로그가 동시에 제어가 되냐 안되냐에 따라서
Modal , Modaless로 나뉘게 됨. 모달은 메인이 제어가 안되고 modaless는 동시에 제어가 가능함.
고럼 모달부터 시작해보겠음.
일단 프로젝트에다가 오른 클릭해서 project->Add New->Qt->Qt Designer Form Class->Dialog without Buttons
추가하면 이렇게 다이얼로그 클래스가 추가가됨
그리고 mainwindow.cpp에 다음과같이 추가하면 새창띔
Modaless 다이얼로그를 만들기 위해서 기존의 코드는 주석처리해주고
아래와 같이 코드를 바꿔보면 코드를 실행해서 버튼을 누르자마자 창이 꺼질거임
이게 왜그러냐면 트리거 함수가 끝나면서 다이얼로그 메모리가 해제 되버리기때문임
고래서 요렇게
요렇게 하면 하면 Modaless 다이얼로그 생성됨
-끝-