2012-04-14 128 views
1

您好我正在为python开发一个Qgis插件,我需要连接sselectionChanged信号时发出的图层功能被选中,我找不到任何互联网上的例子,这是我有什么据如何获取selectionChanged信号

QObject.connect(self.iface.mapCanvas(),SIGNAL("selectionChanged(QgsMapLayer)"), self.test) 

做了QGIS的日志我得到这样的警告

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

回答

1

,你所要做的就是每一次创建一个信号,你选择一个图层:

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 

编辑:断开连接(错误图层)固定