使用新样式的信号和插槽的组合框



我有两行使用旧的信号和插槽样式。

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

我想知道新风格会是什么样子。我是python的新手,我对信号和插槽没有太多经验。有没有一个真正好的资源来涵盖这一点?文档并没有真正帮助我理解发生了什么。

解决方案是指示正在发出的信号的参数类型:

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_())

最新更新