티스토리 뷰
Qt에서는 signal과 slot이 존재한다. 이벤트 발생시 signal이 발생되고, signal발생시 호출되는 함수를 slot이라고 한다. 그리고 signal과 slot을 서로 연결(connect)해야 올바르게 작동이 된다.
signal과 slot을 연결하는 방법
- QtCore.QObject.connect(widget, QtCore.SIGNAL(‘signalname’), slot_function)
- 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)'))
'pyqt4' 카테고리의 다른 글
메인위도우에서 다이얼로그를 사용하는 방법 (0) | 2016.06.25 |
---|---|
designer로 만든 ui를 상속받아 사용하는 방법 (1) | 2016.06.25 |
사용자 정의 시그널(signal)과 발생(emit) (0) | 2016.06.25 |
pyuic4 -x로 만들어지는 py파일 (0) | 2016.06.20 |
anaconda3.5에서 Qt designer를 이용하는 방법 (0) | 2016.06.19 |
댓글