Mengembangkan plugin QGIS, saya menemukan bahwa jika tidak ada layer yang dipilih pada panel Layers saya dapat mengulangi semua layer dan melakukan apa saja pada mereka, tetapi "aktifkan".
Bisakah seseorang memberi saya petunjuk?
Mengembangkan plugin QGIS, saya menemukan bahwa jika tidak ada layer yang dipilih pada panel Layers saya dapat mengulangi semua layer dan melakukan apa saja pada mereka, tetapi "aktifkan".
Bisakah seseorang memberi saya petunjuk?
Jawaban:
Anda dapat mengatur lapisan aktif menggunakan objek qgis.utils.iface (yaitu QgisInterface ):
qgis.utils.iface.setActiveLayer(QgsMapLayer) # returns bool
# or
qgis.utils.iface.legendInterface().setCurrentLayer(QgsMapLayer) # returns bool
Menghapus pilihan, atau lapisan aktif (item QTreeWidget yang digarisbawahi dalam QGIS 2.0), dalam legenda sedikit lebih terlibat:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
lg = qgis.utils.iface.mainWindow().findChild(QTreeWidget, 'theMapLegend')
lg.selectionModel().clear() # clear just selection
lg.setCurrentItem(None) # clear selection and active layer
Ada tiga cara untuk mengambil lapisan saat ini, relatif terhadap apa yang mungkin ingin Anda lakukan:
~ via QList <QgsMapLayer *> QgsLegendInterface :: layers ()
qgis.utils.iface.legendInterface().layers() # returns [layer, ...]
~ via QList <QgsMapLayer *> QgsMapCanvas :: layers () :
qgis.utils.iface.mapCanvas().layers() # returns [layer, ...]
~ via const QMap <QString, QgsMapLayer *> & QgsMapLayerRegistry :: mapLayers () :
QgsMapLayerRegistry.instance().mapLayers() # returns {'layer_id': layer, ...}
Referensi jawaban ini untuk informasi tentang perbedaan dalam koleksi layer tersebut.