这是我的问题。我想创建n个QLineEdit小部件(n可以是任何数字,取决于输入值)。我可以创建那些QLineEdit小部件,给它们对象名称和文本,但我不能在所有这些小部件上定义信号(我希望每个QLineEdit小部件在与它交互时都会发出信号)。这是代码的示例:
self.fieldList = {}
for (i, value) in attrMap.iteritems():
self.fieldList["valueField" + str(i)] = QtGui.QLineEdit()
self.fieldList["valueField" + str(i)].setObjectName(_fromUtf8("attributeValueField_{0}".format(i)))
self.fieldList["valueField" + str(i)].setText(_fromUtf8("{0}".format(value.toString())))
self.fieldList["valueField" + str(i)].cursorPositionChanged.connect(lambda: (self.checkState(self.fieldList["valueField" + str(i)])))
问题仍然存在于最后一行:
self.fieldList["valueField" + str(i)].cursorPositionChanged.connect(lambda: (self.checkState(self.fieldList["valueField" + str(i)])))
我认为该信号会粘在每个小部件上,但是由于循环,信号从小部件“跳转”到小部件,直到它到达最后一个小部件,因此只有最后一个小部件能够发出信号。那么如何安排每个小部件在更改时发出信号?