currentIndexChanged信号有两个重载,一个重载传递包含当前索引的int,另一个重载包含与当前索引关联的文本的QString。
我想使用后者,但是如果我这样做,代码会崩溃,而如果使用前者,代码会工作。我在做什么错了?
from PyQt5 import QtCore, QtWidgets
import sys
class MyWindow(QtWidgets.QWidget):
def __init__(self, *args):
super().__init__(*args)
box = QtWidgets.QComboBox()
box.addItems(['First', 'Second', 'Third'])
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(box)
self.setLayout(layout)
box.currentIndexChanged.connect(self.my_handler)
#@QtCore.pyqtSlot(int)
@QtCore.pyqtSlot('QString')
def my_handler(self, text):
print(text)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
P.S。
很奇怪,在我的代码的扩展版本中,我可以成功连接QString重载的插槽。执行时不会崩溃。不过它确实接收到一个整数,因此它忽略了我的“ Qstring”规范。