티스토리 뷰

pyqt4

signal과 slot

히처리 2016. 6. 20. 23:54

Qt에서는 signal과 slot이 존재한다. 이벤트 발생시 signal이 발생되고, signal발생시 호출되는 함수를 slot이라고 한다. 그리고 signal과 slot을 서로 연결(connect)해야 올바르게 작동이 된다.

signal과 slot을 연결하는 방법

  1. QtCore.QObject.connect(widget, QtCore.SIGNAL(‘signalname’), slot_function)
  2. widget.signalname.connect(slot_function)

위의 2가지 방법 모두 결과는 같다.

사용 예제

button(buttonset)에서 clicked시그널이 발생시 사용자가 정의한 buttonset_clicked()메서드가 호출되도록 예제를 작성하면 아래와 같다.


# 1
self.connect(button_set, Qt.Core.SIGNAL('clicked'), button_set_clicked)
# 2
self.button_set.clicked.connect(button_set_clicked)

또 다른 방법

만일 위의 프로그램처럼 spin_box(왼쪽 위젯)과 slider(오른쪽 위젯)의 값이 서로 동기화를 시켜야 할경우 1번 방법을 조금 수정하여 사용할 수 있다.

class SetAgeDialog(Ui_SetAgeDialog):
    def __init__(self, parent):
        self.setupUi(parent)

        # 1
        self.spin_box.valueChanged.connect(self.slider.setValue)
        # 2
        parent.connect(self.slider, QtCore.SIGNAL('valueChanged(int)'), self.spin_box, QtCore.SLOT('setValue(int)'))
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함