[임베디드 GUI] 메인 윈도우

정재훈·2022년 4월 25일
0

임베디드 GUI

목록 보기
3/7

QMainWindow

QWidget 을 기반으로 메뉴 / 상태바 / 툴바 등 자주쓰는 Window 형태를 미리 구현해 둔 클래스로, 메뉴 / 상태표시줄 / 툴바를 쓰기 위해서는QWidget 이 아닌 QMainWindow 를 써야 한다

용어

Modal : 최상위 Modal 창만 사용 가능하여 하위 창 제어 불가 , exec_() 메서드 사용
Modaless : 순서 상관없이 사용자가 마음대로 제어 가능한 창 , show() 메서드 사용

StatusBar

StatusBar : 화면하단에 표시되는 정보 출력

from PySide6.QtWidgets import *

app = QApplication()
win = QMainWindow()

win.resize(400,400) # setGeomerty(0,0,400,400)와 동일

txt = QLabel("라면",win) # 상단 배치
txt.adjustSize() # 글자길이 자동 맞춰주는 메서드

bar = win.statusBar()
bar.showMessage("배고프다")  # 하단 배치

win.show()
app.exec()

QMainWindow 에 구현되어 있는 MenuBar 객체 사용

from PySide6.QtWidgets import *

app = QApplication()
win = QMainWindow()

menu = win.menuBar()
menu.addMenu("파일")
menu.addMenu("저장")

win.show()
app.exec()

하위 메뉴

QAction : 메뉴 / 툴바 버튼 / 단축키를 통해 명령을 내릴 수 있는 객체

from PySide6.QtWidgets import *
from PySide6.QtGui import *   # 하위 메뉴를 위한 import

app = QApplication()
win = QMainWindow()

menu = win.menuBar()
menuFile = menu.addMenu("파일")
menuStore = menu.addMenu("저장")

new = QAction("New",win)
menuFile.addAction(new)

win.show()
app.exec()

Trigger Signal

Trigger Signal 연결
메뉴를 눌렀을 때 , Trigger Signal 이 발생
슬롯 함수와 connect 하기

from PySide6.QtWidgets import *
from PySide6.QtGui import *   # 하위 메뉴를 위한 import

app = QApplication()
win = QMainWindow()

menu = win.menuBar()
menuFile = menu.addMenu("파일")
menuStore = menu.addMenu("저장")

bar = win.statusBar()
bar.showMessage("메뉴를 클릭해보세요.")

new = QAction("New",win)
menuFile.addAction(new)

def run():
    bar.showMessage("버튼 눌림")

new.triggered.connect(run)

win.show()
app.exec()

CentralWidget

Label을 QMainWindow에 추가할 때 영역이 겹치게 되는 문제를 해결하기 위한 메서드

from PySide6.QtWidgets import *
from PySide6.QtGui import *   # 하위 메뉴를 위한 import

app = QApplication()
win = QMainWindow()

menu = win.menuBar()
menu.addMenu("안녕")
menu.addMenu("잘가")

main = QWidget()
win.setCentralWidget(main) 

txt = QLabel("HI",main)

win.show()
app.exec()
profile
여러 방향으로 접근하는 개발자

0개의 댓글