我绑定2个键来调用我班级的2个方法。是否可以调用某个方法并知道按下了哪个键?
def initGui(self):
self.keyAction = QAction("Test Plugin", self.iface.mainWindow())
self.iface.registerMainWindowAction(self.keyAction, self.toggle_key_1)
self.iface.addPluginToMenu("&Test plugins", self.keyAction)
QObject.connect(self.keyAction, SIGNAL("triggered()"), self.toogle_layer_1)
self.keyAction = QAction("Test Plugin", self.iface.mainWindow())
self.iface.registerMainWindowAction(self.keyAction, self.toggle_key_2)
self.iface.addPluginToMenu("&Test plugins", self.keyAction)
QObject.connect(self.keyAction, SIGNAL("triggered()"), self.toogle_layer_2)
答案 0 :(得分:2)
是的,您可以使用QObject::sender()
功能知道哪个对象已从您的插槽(功能)触发了信号。正如Qt docs所说:
如果在a中调用,则返回指向发送信号的对象的指针 由信号激活的插槽;否则它返回0.指针是 仅在执行调用此函数的插槽期间有效 来自这个对象的线程上下文。
<强>更新强>
例如,在您的插槽中,您可以写:
def toogle_layer(self):
action = QtCore.QObject.sender()
if action == self.action1:
# do something
elif action == self.action2:
# do something else