2010-04-12 5 views
3

얼마 전 나는 C++ 용 Qt에서 약간의 작업을했다. 지금 나는 PyQt로 일하고있다.PyQt 신호를 올바르게 사용하기.

QStackedWidget의 하위 클래스가 있으며 그 안에 QWidget의 하위 클래스가 있습니다. QWidget에서 QStackedWidget의 다음 페이지로 이동하는 버튼을 클릭하고 싶습니다. 다음과 같이 내 (간체) 접근 방식은 다음과 같습니다

class Stacked(QtGui.QStackedWidget): 
    def __init__(self, parent=None): 
     QtGui.QStackedWidget.__init__(self, parent) 
     self.widget1 = EventsPage() 
     self.widget1.nextPage.connect(self.nextPage) 
     self.widget2 = MyWidget() 
     self.addWidget(self.widget1) 
     self.addWidget(self.widget2) 

    def nextPage(self): 
     self.setCurrentIndex(self.currentIndex() + 1) 


class EventsPage(QtGui.QWidget): 
    nextPage = QtCore.pyqtSignal() 

    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.continueButton = QtGui.QPushButton('Continue') 
     self.continueButton.clicked.connect(self.nextPage) 

그래서, 기본적으로, 나는 다음 nextPage 방법 스택에 연결하고있어 EventsPage nextPage 신호에 continueButton clicked 신호를 연결하고 있습니다. Stacked에서 EventsPage의 내부를 탐구하고 self.widget1.continueButton.clicked을 연결할 수는 있지만 신호 및 슬롯의 목적을 완전히 상실한 것처럼 보였습니다.

이 접근법은 의미가 있습니까? 아니면 더 좋은 방법이 있습니까?

답변

6

아니요, 이것은 완벽합니다. 건물 꼭대기에서 물결 쳤던 사람들을 신호라고 생각하십시오. 그들은 길을 건너기를 원하지 않습니다 (모든 계단 ...). 그래서 그들은 다른 건물의 다른 사람들이하고있는 것을 봅니다. 이렇게하면 아무도 건물 내부에서 무슨 일이 일어나는지 신경 써야합니다.

+0

+1 좋은 비유 :) – Skilldrick

관련 문제