Dit gedeelte behandelt codesnippers om de ontwikkeling van plug-ins te faciliteren.
Voeg in de plug-in de initGui() toe
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)
Aan unload() voeg toe
self.iface.unregisterMainWindowAction(self.keyAction)
De methode die wordt aangeroepen wanneer op F7 wordt gedrukt
def keyActionF7(self):
QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed F7")
Vanaf QGIS 2.4 is er een nieuwe API voor de lagenboom die directe toegang tot de lagenboom in de legenda toestaat. Hier is een voorbeeld om te schakelen met de zichtbaarheid van de actieve laag
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)
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")
De methode vereist één parameter (de nieuwe waarde voor de attribuutveld van het geselecteerde object(en)) en kan worden aangeroepen met
self.changeValue(50)