Outdated version of the documentation. Find the latest one here.

Frammenti di codice

Questa sezione contiene frammenti di codice per facilitare lo sviluppo dei plugin.

Come invocare un metodo tramite scorciatoia da tastiera

Nel plug-in aggiungere a initGui()

self.keyAction = QAction("Test Plugin", self.iface.mainWindow())
self.iface.registerMainWindowAction(self.keyAction, "F7") # action1 triggered by F7 key
self.iface.addPluginToMenu("&Test plugins", self.keyAction)
QObject.connect(self.keyAction, SIGNAL("triggered()"),self.keyActionF7)

Aggiungere a unload()

self.iface.unregisterMainWindowAction(self.keyAction)

Il metodo che viene invocato quando si preme F7

def keyActionF7(self):
  QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed F7")

Come impostare/rimuovere i layers

A partire da QGIS 2.4 é disponibile una nuova API dell’albero dei layer che consente un accesso diretto all’albero dei layer direttamente dalla legenda. Questo é un esempio di come attivare/rimuovere la visibilitá del layer attivo.

root = QgsProject.instance().layerTreeRoot()
node = root.findLayer(iface.activeLayer().id())
new_state = Qt.Checked if node.isVisible() == Qt.Unchecked else Qt.Unchecked
node.setVisible(new_state)

Come accedere alla tabella degli attributi di una caratteristica selezionata

def changeValue(self, value):
  layer = self.iface.activeLayer()
  if(layer):
    nF = layer.selectedFeatureCount()
    if (nF > 0):
      layer.startEditing()
    ob = layer.selectedFeaturesIds()
    b = QVariant(value)
    if (nF > 1):
      for i in ob:
      layer.changeAttributeValue(int(i), 1, b) # 1 being the second column
    else:
      layer.changeAttributeValue(int(ob[0]), 1, b) # 1 being the second column
    layer.commitChanges()
    else:
      QMessageBox.critical(self.iface.mainWindow(), "Error", "Please select at least one feature from current layer")
  else:
    QMessageBox.critical(self.iface.mainWindow(), "Error", "Please select a layer")

Il metodo richiede un parametro (il nuovo valore per il campo attributo delle caratteristiche selezionate()) e puó essere invocato da

self.changeValue(50)