Некоторое время назад я сделал некоторую работу в Qt для C++; теперь я работаю с 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)
Так, в принципе, я подключить сигнал continueButton clicked
к сигналу EventsPage nextPage
, который я тогда соединительном в ячейке с методом nextPage
. Я мог просто вникать во внутренние объекты EventsPage в Stacked и подключать self.widget1.continueButton.clicked
, но это, казалось, полностью разрушило цель сигналов и слотов.
Так ли этот подход имеет смысл или есть лучший способ?
+1 Хорошая аналогия :) – Skilldrick