업무 자동화/python & CAD
Qt Designer] 시그널(Signal)과 슬롯(Slot)
ToolBOX01
2025. 8. 29. 07:53
반응형
Qt Designer에서 시그널(Signal)과 슬롯(Slot)은 객체 간의 이벤트를 처리하고 통신하는 핵심 메커니즘입니다.
- 시그널:
특정 이벤트가 발생했을 때 객체가 방출하는 신호입니다. 예를 들어, 버튼이 클릭되면 clicked 시그널이 방출됩니다. - 슬롯:
시그널에 반응하여 실행되는 함수(메서드)입니다.
시그널이 방출되면 연결된 슬롯이 호출되어 특정 작업을 수행합니다. - 연결:
시그널과 슬롯은 connect 메서드를 통해 연결됩니다.
이를 통해 이벤트(예: 버튼 클릭)가 발생하면 지정된 슬롯 함수가 자동으로 실행됩니다.
Qt의 시그널과 슬롯 메커니즘은 느슨한 결합(loose coupling)을 제공하여 코드의 유연성과 재사용성을 높입니다. Qt Designer에서는 시그널과 슬롯을 GUI에서 시각적으로 연결할 수 있으며, Python 코드에서도 프로그래밍 방식으로 연결 가능합니다.
느슨한 결합(loose coupling)은 소프트웨어 설계 원칙 중 하나로, 시스템의 구성 요소(예: 객체, 모듈, 클래스) 간의
의존성을 최소화하여 상호작용이 간접적이고 유연하게 이루어지도록 하는 것을 의미합니다.
사용방법 예제)
시그널과 슬롯의 작동 원리
1) 시그널 발생: 사용자가 버튼을 클릭하거나 특정 조건이 만족되면 시그널이 방출됩니다.
2) 슬롯 실행: 시그널에 연결된 슬롯 함수가 호출되어 작업을 수행합니다.
3) 연결 방식:
- Qt Designer: Signal/Slot Editor를 사용해 시각적으로 연결.
- Python 코드: signal.connect(slot) 메서드를 사용해 연결.
예시 : Qt Designer에서 시그널과 슬롯 연결
Python 코드 대신 Qt Designer에서 시그널과 슬롯을 시각적으로 연결할 수도 있습니다:
- Qt Designer에서 Signal/Slot Editor 모드로 전환 (F4 키 또는 메뉴에서 선택).
- pushButton의 clicked() 시그널을 label의 setText() 슬롯에 연결.
- setText()의 매개변수로 "Button Clicked!"를 입력.
- .ui 파일을 저장하고 변환 후, Python 코드에서 추가 연결 없이 실행 가능.
Qt Designer로 연결한 경우 :
- Qt Designer에서 연결하면 Python 코드에서 connect 호출이 필요 없습니다:
파이썬 코드 예시
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow
from main_window import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
by korealionkk@gmail.com

반응형