1

こんにちは、Python で Qgis のプラグインを開発しています。レイヤーの機能が選択されたときに出力される sselectionChanged 信号を接続する必要があります。インターネット上で例を見つけることができませんでした。

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

qgisのログで、この警告が表示されます

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

1 に答える 1

2

レイヤーを選択するたびに信号を作成する必要があります。

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

編集:切断(間違ったレイヤー)を修正

于 2012-06-03T15:06:26.837 に答える