說我有實現一個小部件,它需要處理的部件C.發送但是小部件的信號沒有插件C的參考(在租賃很麻煩得到)。什麼是正確的方法?手柄信號是未知
下面是一個簡單的例子:
class WidgetA(QtGui.QWidget):
def __init__(self):
self._tab_widget = QtGui.QTabWidget()
self.layout().addWidget(_tab_widget)
self._tab_widget.addTab(WidgetB())
self._tab_widget.addTab(...)
def show_another_tab(self, index):
self._tab_widget.setCurrentIndex(index)
class WidgetB(QtGui.QWidget):
def __init__(self):
self.layout().addWidget(WidgetC())
class WidgetC(QtGui.QWidget):
show_another_tab = QtCore.pyqtSignal()
def __init__(self):
button = QtGui.QPushButton("show_another_tab")
button.clicked.connect(lambda: self.show_another_tab.emit(2))
所以基本上,我有一個以上的標籤。其中一個選項卡中有一個小按鈕。當用戶點擊按鈕時,我想切換到另一個選項卡。可惜的是,這個按鈕是WidgetA的一個孩子的孩子,所以我在WidgetA中保留一個按鈕的引用是很麻煩的。可以在運行時動態創建更多按鈕。
什麼是在這種情況下,使用信號的正確方法?或者我應該將WidgetA引用到全局變量中(我真的不想這麼做,但似乎是最簡單的方法)?
從插件℃的信號連接到插件B的信號,而信號連接到一個微件的槽? – thuga 2015-04-01 12:04:32
@thuga我不知道這是否是一個好主意,如果我有另一小d是小部件℃的孩子,小部件want't處理來自d的信號。 – kkpattern 2015-04-02 01:30:56
然後你可以重新設計你的應用程序,這樣你就不會有這樣的問題,或者你可以只從小部件d連接一個信號到小部件c的信號。 – thuga 2015-04-02 06:47:30