代码之家  ›  专栏  ›  技术社区  ›  artomason

为组合框使用新型信号和插槽?

  •  2
  • artomason  · 技术社区  · 7 年前

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

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   eyllanesc Yonghwan Shin    7 年前

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

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