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

알아두면 유용한 코드들

이 장에서는 플러그인 개발을 쉽게 할 수 있도록 도와주는 코드 조각들을 설명합니다.

단축키로 메소드를 호출하는 방법

플러그인 내부의 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)

unload() 함수에 다음 코드를 추가하십시오.

self.iface.unregisterMainWindowAction(self.keyAction)

F7 키를 누르면 해당 메소드가 호출됩니다.

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

레이어를 켜고 끄는 방법

QGIS 2.4 버전부터 범례에 있는 레이어 트리에 직접 접근할 수 있도록 해주는 새로운 레이어 트리 API를 지원합니다. 다음은 활성화된 레이어의 가시성을 전환하는 방법에 대한 예시입니다.

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")

이 메소드에는 반드시 1개의 파라미터(선택한 피처(들)의 속성 항목을 나타내는 새로운 값)가 필요하며, 다음처럼 호출할 수 있습니다.

self.changeValue(50)