def reload(self, *args): try: # the table self.layer = self.iface.activeLayer() self.setWindowTitle(self.iface.activeLayer().name() + ":: Ursprünglich selektierte Objekte: {0}". format(self.layer.selectedFeatureCount())) self.vector_layer_cache = QgsVectorLayerCache(self.layer, 10000) self.attribute_table_model = QgsAttributeTableModel( self.vector_layer_cache) self.attribute_table_model.loadLayer() self.attribute_table_filter_model = QgsAttributeTableFilterModel( self.canvas, self.attribute_table_model) # filter self.attribute_table_filter_model.setFilterMode( QgsAttributeTableFilterModel.ShowFilteredList) self.attribute_table_filter_model.setFilteredFeatures( self.layer.selectedFeatureIds()) self.view.setModel(self.attribute_table_filter_model) self.view.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) for f in self.layer.fields(): # if self.debug: self.info.log("editorWidgetSetup:",f.name(),f.editorWidgetSetup().type()) if f.editorWidgetSetup().type() == 'Hidden' and not self.debug: self.view.horizontalHeader().setSectionHidden( self.layer.fields().indexOf(f.name()), True) # only follow selection on the map # self.selectionManager = qgis.QgsVectorLayerSelectionManager(self.layer, self.attribute_table_filter_model) # self.view.setFeatureSelectionManager(self.selectionManager) self.layer.selectionChanged.connect(self._selectionChanged) except Exception as e: self.info.err(e)
def openAttributeDialog(self, layer): self.layerCache = QgsVectorLayerCache(layer, layer.featureCount()) self.tableModel = QgsAttributeTableModel(self.layerCache) self.tableModel.loadLayer() self.tableFilterModel = QgsAttributeTableFilterModel(self.mapCanvas, self.tableModel, parent=self.tableModel) self.tableFilterModel.setFilterMode(QgsAttributeTableFilterModel.ShowAll) self.tableView.setModel(self.tableFilterModel)
def attb_table(self): from PyQt4.QtGui import QApplication, QTableView from qgis.gui import QgsAttributeTableModel QMessageBox.about(self.view, 'teste', str(self.view.currentLayer())) cache = QgsVectorLayerCache(self.view.currentLayer(), 10000) model = QgsAttributeTableModel(cache) model.loadLayer() table = QTableView() table.setModel(model) table.show()
def runReporting(self): (res1, res2) = self.model.runReportingWithContext(self.dlg.context,self.dlg.feedback) out_path = res1[FragScape_algs.EffectiveMeshSizeGlobalAlgorithm.OUTPUT] out_global_meff = res2[FragScape_algs.EffectiveMeshSizeGlobalAlgorithm.OUTPUT_GLOBAL_MEFF] # UI update self.dlg.resultsGlobalRes.setText(str(out_global_meff)) self.loaded_layer = qgsUtils.loadVectorLayer(out_path,loadProject=True) self.layer_cache = QgsVectorLayerCache(self.loaded_layer,24) self.attribute_model = QgsAttributeTableModel(self.layer_cache) self.attribute_model.loadLayer() self.dlg.resultsView.setModel(self.attribute_model) self.dlg.resultsView.show()
def testTransactionRollback(self): """Test issue https://github.com/qgis/QGIS/issues/48171#issuecomment-1132709901""" d = QTemporaryDir() path = d.path() source_fields = QgsFields() source_fields.append(QgsField('int', QVariant.Int)) vl = QgsMemoryProviderUtils.createMemoryLayer('test', source_fields) f = QgsFeature() f.setAttributes([1]) vl.dataProvider().addFeature(f) tmpfile = os.path.join(path, 'testTransactionRollback.sqlite') options = { 'driverName': 'SpatiaLite', 'layerName': 'test' } err = QgsVectorLayerExporter.exportLayer(vl, tmpfile, "ogr", vl.crs(), False, options) self.assertEqual(err[0], QgsVectorLayerExporter.NoError, 'unexpected import error {0}'.format(err)) vl = QgsVectorLayer( 'dbname=\'{}\' table="test" () sql='.format(tmpfile), 'test', 'spatialite') self.assertTrue(vl.isValid()) p = QgsProject.instance() p.setTransactionMode(Qgis.TransactionMode.AutomaticGroups) self.assertTrue(p.addMapLayer(vl)) cache = QgsVectorLayerCache(vl, 100) am = QgsAttributeTableModel(cache) am.loadLayer() self.assertEqual(am.rowCount(), 1) self.assertTrue(vl.startEditing()) vl.beginEditCommand('edit1') f = QgsFeature() f.setAttributes([2]) self.assertTrue(vl.addFeature(f)) self.assertEqual(am.rowCount(), 2) self.assertEqual(len([f for f in vl.getFeatures()]), 2) vl.endEditCommand() self.assertTrue(vl.rollBack()) self.assertEqual(len([f for f in vl.getFeatures()]), 1) self.assertEqual(am.rowCount(), 1)
def loadTable(self): """ Loads the attribute table. This is still not working properly. QGIS crashes. """ currLayer = self.iface.activeLayer() if not currLayer: return if currLayer.type() != QgsMapLayer.VectorLayer: return cache = QgsVectorLayerCache(currLayer, 10) model = QgsAttributeTableModel(cache) model.loadLayer() filterModel = QgsAttributeTableFilterModel(self.iface.mapCanvas(), model) self.tableView.setModel(model) self.tableView.show()
def __init__(self, parent=None): """Constructor.""" super(ChartDockWidget, self).__init__(parent) # Set up the user interface from Designer. # After setupUI you can access any designer object by doing # self.<objectname>, and you can use autoconnect slots - see # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html # #widgets-and-dialogs-with-auto-connect self.setupUi(self) project = QgsProject.instance() self._layers.addItem("") for layerid, layer in project.mapLayers().items(): self._layers.addItem(layer.sourceName(), layerid) self._layers.currentIndexChanged.connect(self.__on_layer_changed) self._axisX.currentIndexChanged.connect(self.__refresh_chart) self._axisY.currentIndexChanged.connect(self.__refresh_chart) chart = QChart() chartView = QChartView(chart, self) self._main.layout().addWidget(chartView) series = QLineSeries() series.setName("Line 1") self._mapper = QVXYModelMapper(chartView) self._mapper.setXColumn(0) self._mapper.setYColumn(2) self._mapper.setSeries(series) layer = iface.activeLayer() layer_cache = QgsVectorLayerCache(layer, 10000, chartView) layer_cache.setFullCache(True) model = QgsAttributeTableModel(layer_cache, chartView) model.loadLayer() self._mapper.setModel(model) chart.addSeries(series)
def __init__(self, parent): QDialog.__init__(self) self.setupUi(self) uri = QgsDataSourceUri() uri.setConnection('localhost', '5432', 'etienne', 'postgres', os.environ['APP_PASSWORD']) uri.setDataSource('public', 'equipements', None) self.layer = QgsVectorLayer(uri.uri(False), 'equipements', 'postgres') self.layer_cache = QgsVectorLayerCache(self.layer, 120) self.model = QgsAttributeTableModel(self.layer_cache) self.model.loadLayer() tbl_filter_model = QgsAttributeTableFilterModel( QgsMapCanvas(), self.model) self.attribute_table.setModel(tbl_filter_model) self.attribute_table.resizeRowsToContents() self.attribute_table.resizeColumnsToContents() self.add_item.clicked.connect(self.add_new_item) self.exec_()
def setUp(self): self.layer = self.createLayer() self.cache = QgsVectorLayerCache(self.layer, 100) self.am = QgsAttributeTableModel(self.cache) self.am.loadLayer()
# coding: utf-8 from PyQt4.QtGui import QDialog, QTableView from qgis.core import QgsVectorLayerCache from qgis.gui import (QgsAttributeTableModel, QgsAttributeTableView, QgsAttributeTableFilterModel) from qgis.utils import iface new_dialog = QDialog() new_dialog.resize(800, 600) vector_layer_cache = QgsVectorLayerCache(iface.activeLayer(), 10000) attribute_table_model = QgsAttributeTableModel(vector_layer_cache) attribute_table_model.loadLayer() attribute_table_filter_model = QgsAttributeTableFilterModel( iface.mapCanvas(), attribute_table_model) attribute_table_view = QgsAttributeTableView(new_dialog) attribute_table_view.setModel(attribute_table_filter_model) new_dialog.show() # Or display the attribute_table_model with QTableView (pure QT solution) table_view = QTableView() table_view.setModel(attribute_table_model) table_view.show()