Plugins 如何获得selectionChanged信号

Plugins 如何获得selectionChanged信号,plugins,pyqt,qgis,Plugins,Pyqt,Qgis,大家好,我正在用python为Qgis开发一个插件,我需要连接选定图层特征时发出的信号,我在internet上找不到任何示例,以下是我迄今为止所做的 QObject.connect(self.iface.mapCanvas(),SIGNAL("selectionChanged(QgsMapLayer)"), self.test) 在qgis的日志上我得到了这个警告 Warning: Object::connect: (receiver name: 'MainWindow') 您需要做的是在

大家好,我正在用python为Qgis开发一个插件,我需要连接选定图层特征时发出的信号,我在internet上找不到任何示例,以下是我迄今为止所做的

QObject.connect(self.iface.mapCanvas(),SIGNAL("selectionChanged(QgsMapLayer)"), self.test)
在qgis的日志上我得到了这个警告

Warning: Object::connect:  (receiver name: 'MainWindow')

您需要做的是在每次选择图层时创建一个信号:

def initGui(self):
    # ... your other code here
    self.handler = None
    self.selected_layer = None
    QObject.connect(self.iface,SIGNAL("currentLayerChanged(QgsMapLayer *)") ,self.layerChanged)

def layerChanged(self, layer):
    if self.handler:
        QObject.disconnect(self.selected_layer, SIGNAL("selectionChanged()"),self.select_changed)
        self.handler = False
        self.selected_layer = None
    if layer is not None:
        if layer.isValid():
            QObject.connect(layer,SIGNAL("selectionChanged()"),self.select_changed)
            self.selected_layer = layer

def select_changed(self):
   # whatever
   pass
编辑:断开连接(错误图层)已修复