QGIS MV (Model-View) 패턴

2021. 4. 21. 11:56·[Framework] - QGIS

QGIS Framework의 레이어패널

필자는 QGIS Framework의 위와 같은 UI에서 여러 그룹을 선택했을 때 해당 그룹들을 반환하는 유틸을 작업했다. QGIS에서 자체적으로 선택된 레이어를 반환하는 QgisInterface.activeLayer() 메소드가 있지만 해당 메소드는 하나의 레이어밖에 못가져오는 한계가 있다.

 

일단 이 포스트를 시작하기 이전에 염두해야할 사항이 있다.

 

1. QGIS Framework는 PyQT 기반이라는 것

2. MV (Model-View) 패턴으로 UI가 구성되어 있다는 것

 

우선 다음과 같은 코드로 레이어 패널에 속한 그룹의 트리(QgsLayerTree)를 가져왔다.

root = QgsProject.instance().layerTreeRoot()

 

그리고 해당 트리를 model에 import한 다음 view에다가 set하면 다음과 같은 결과가 나온다.

model = QgsLayerTreeModel(root)
view = QgsLayerTreeView()
view.setModel(model)
view.show()

QgsLayerTreeView

그러나 필자가 원하는 것은 새로운 view가 아닌 Framework내에 있는 view를 원하는 것이다.

view: QgsLayerTreeView = iface.layerTreeView()

QGIS Framework의 UI를 얻기 위해서는 iface (QgisInterface)에 접근하면 된다. 그리고 자체 UI에서 여러 그룹을 선택하고 다음과 같은 결과를 얻었다.

자체 Framework의 UI

view.selectedNodes()

>>
[<qgis._core.QgsLayerTreeGroup object at 0x000001ED99A231F8>, 
<qgis._core.QgsLayerTreeGroup object at 0x000001ED99A23288>, 
<qgis._core.QgsLayerTreeGroup object at 0x000001ED99A230D8>]

 

'[Framework] - QGIS' 카테고리의 다른 글

QgsLayerTree  (0) 2021.04.21
QgsVectorDataProvider  (0) 2021.04.13
QgsFeature 이동  (0) 2021.04.09
시점이동, 객체의 필드  (0) 2021.01.22
QgsGeometry, asPolyline()  (0) 2021.01.22
'[Framework] - QGIS' 카테고리의 다른 글
  • QgsLayerTree
  • QgsVectorDataProvider
  • QgsFeature 이동
  • 시점이동, 객체의 필드
Bebsae
Bebsae
  • Bebsae
    뱁새zip
    Bebsae
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • [DevOps] - Kubernetes (5)
      • [DevOps] - AWS (1)
      • [AI] - Machine Learning (19)
      • [AI] - Neural Network (7)
      • [CS] - Network (2)
      • [CS] - Data Structure (3)
      • [CS] - Design Pattern (6)
      • [Language] - Python (15)
      • [Library] - Numpy (7)
        • Quick Start (5)
        • API (2)
      • [Framework] - Django (3)
      • [Framework] - QGIS (6)
      • [Framework] - PyQT (4)
      • [Mathematics] - Linear Alge.. (14)
      • [Mathematics] - Statistical (2)
      • [ETC] - Python (3)
      • [ETC] - C++ (1)
      • [ETC] - Linux (1)
      • 논문 (5)
      • 회고록 (3)
      • 생산성 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    신경망
    Convolution
    QGIS
    MachineLearning
    decomposition
    numpy
    linearalgebra
    RNN
    머신러닝
    Machine
    선형대수
    Linear
    교차검증
    algebra
    디자인패턴
    DEEPLEARNING
    분해
    Learning
    파이썬
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Bebsae
QGIS MV (Model-View) 패턴
상단으로

티스토리툴바