如何在发送SIGNAL后获取密钥序列

时间:2014-12-12 14:06:22

标签: python qt pyqt

我绑定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)

1 个答案:

答案 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