我想通过不同参数的相同函数检查多个QtGui.QLineEdits中的用户输入。我试过QtCore.SignalMapper。这是我在测试应用程序中的代码:
self.signalMapper = QtCore.QSignalMapper(self)
QtCore.QObject.connect(self.lineEdit_331, QtCore.SIGNAL(_fromUtf8('returnPressed()')), self.signalMapper.map)
QtCore.QObject.connect(self.lineEdit_341, QtCore.SIGNAL(_fromUtf8("returnPressed()")), self.signalMapper.map)
self.signalMapper.setMapping(self.lineEdit_331,'links')
self.signalMapper.setMapping(self.lineEdit_341,'rechts')
QtCore.QObject.connect(self.signalMapper, QtCore.SIGNAL(_fromUtf8("mapped(QString)")),self.test)signalMapper存在,并且所有连接都返回'True‘,但是没有调用插槽(在更改'connect’和‘setMapping’的顺序后相同)。将lineEdits信号连接到插槽的工作原理是:
QtCore.QObject.connect(self.lineEdit_331, QtCore.SIGNAL(_fromUtf8("returnPressed()")), self.test_1)我的密码怎么了?谢谢你的帮助
发布于 2014-03-28 02:48:11
代码的主要错误在于,您正在使用难看的、容易出错的、老式的语法来连接信号,而不是使用新型语法。
下面是您的示例代码的重写:
self.signalMapper = QtCore.QSignalMapper(self)
self.lineEdit_331.returnPressed.connect(self.signalMapper.map)
self.lineEdit_331.returnPressed.connect(self.signalMapper.map)
self.signalMapper.setMapping(self.lineEdit_331, 'links')
self.signalMapper.setMapping(self.lineEdit_341, 'rechts')
self.signalMapper.mapped[str].connect(self.test)如果您想知道原始代码为什么不能工作,那是因为您应该在前两个连接中使用插槽。它应该是:
QtCore.QObject.connect(
self.lineEdit_331, QtCore.SIGNAL('returnPressed()'),
self.signalMapper, QtCore.SLOT('map()'))这是因为有两个重载的QSignalMapper.map,所以您需要指定要使用哪一个。
https://stackoverflow.com/questions/22613409
复制相似问题