2017-10-20 4 views
1

는 내가 새로운 스타일이 어떻게 보이는지 궁금콤보 박스 용 새 스타일 신호 및 슬롯 사용?

combobox.emit(SIGNAL("activated(int)"), combobox.currentIndex()) 
combobox.emit(SIGNAL("activated(const QString &)"), combobox.currentText()) 

이전 SIGNAL과 SLOT 스타일을 사용하여 두 줄을 ...있다. 저는 파이썬에 익숙하지 않아 신호와 슬롯에 대한 많은 경험이 없습니다. 주변에 떠있는 정말 좋은 자원이 있나요? 그 문서는 실제로 무슨 일이 일어나고 있는지 이해하지 못했습니다.

답변

1

용액 방사되는 신호의 인수의 유형을 표시하는 것이다

combo.activated[type].connect(someSlot) 

예 :

class Widget(QWidget): 
    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.setLayout(QVBoxLayout()) 
     combo = QComboBox(self) 
     self.layout().addWidget(combo) 
     combo.addItems(["item1", "item2", "item3"]) 
     combo.activated[int].connect(self.onActivatedIndex) 
     combo.activated[str].connect(self.onActivatedText) 

    @pyqtSlot(int) 
    def onActivatedIndex(self, index): 
     print(index) 

    @pyqtSlot(str) 
    def onActivatedText(self, text): 
     print(text) 


if __name__ == '__main__': 
    import sys 
    app = QApplication(sys.argv) 
    w = Widget() 
    w.show() 
    sys.exit(app.exec_()) 
+0

이 경우 발광 대 연결 사용 할 이유가 있는가? –

+0

Connect vs emit는 신호와 슬롯 사이의 연결을 생성하는 대신 signal이 실행될 때 이전에 연결되어 있던 모든 슬롯을 호출해야한다는 것을 PyQt에 알리는 대신 연결을 사용하면 2 가지 보완적인 것입니다 신호. 따라서 connect와 emit 사이에는 아무런 차이가 없습니다. – eyllanesc

+0

그냥 이걸 이해하고 있는지 확인하기 위해 여러 신호가 슬롯에 연결되어 있고 그 신호를 모두 업데이트하려면 방출을 사용하겠습니까? –