def __init__(self, parent=None, dataModel=None): QListView.__init__(self, parent) self._dataModel = dataModel self._selectedDisplayMapping = OrderedDict() self._modelDisplayMapping = OrderedDict() self._attrModel = QStandardItemModel(self)
def test_widget(self): """Manual local GUI test for the model""" d = QDialog() l = QVBoxLayout(d) d.setLayout(l) lbl = QLabel('fetching...', d) l.addWidget(lbl) v = QListView() l.addWidget(v) d.show() md = QgsProviderRegistry.instance().providerMetadata('postgres') conn = md.createConnection(self.uri, {}) res = conn.execSql('SELECT * FROM qgis_test.random_big_data') model = QgsQueryResultModel(res) tester = QAbstractItemModelTester(model, QAbstractItemModelTester.FailureReportingMode.Warning) v.setModel(model) def _set_row_count(idx, first, last): lbl.setText('Rows %s fetched' % model.rowCount(model.index(-1, -1))) # noqa: F821 model.rowsInserted.connect(_set_row_count) d.exec_() # Because exit handler will exit QGIS and clear the connections pool before # the model is deleted (and it will in turn clear the connection) del model
def __init__(self, values, checked_values=[]): self.dial = QDialog() self.result = "" # Layout Principal m_vbl = QVBoxLayout(self.dial) # List item checkable view = QListView() m_vbl.addWidget(view) self.m_sim = QStandardItemModel() view.setModel(self.m_sim) self._load_item(values, checked_values) # List buttons bt_all = QPushButton(self.tr("All")) bt_all.clicked.connect(lambda: self._check_all()) bt_nothing = QPushButton(self.tr("Nothing")) bt_nothing.clicked.connect(lambda: self._check_nothing()) bt_print = QPushButton(self.tr("Ok")) bt_print.clicked.connect(lambda: self._check_ok()) # Sub layout for buttons m_vbh = QHBoxLayout() m_vbl.addLayout(m_vbh) m_vbh.addWidget(bt_all) m_vbh.addWidget(bt_nothing) m_vbh.addWidget(bt_print)
def __init__(self, column, parent=None): """ Class constructor. :param column: Multiple select column object. :type column: MultipleSelectColumn :param parent: Parent widget for the control. :type parent: QWidget """ QListView.__init__(self, parent) # Disable editing of lookup values self.setEditTriggers(QAbstractItemView.NoEditTriggers) self.column = column self._item_model = QStandardItemModel(self) self._value_list = self.column.value_list # Stores lookup objects based on primary keys self._lookup_cache = {} self._initialize() self._association = self.column.association self._first_parent_col = self._association.first_reference_column.name self._second_parent_col = self._association.second_reference_column.name # Association model self._assoc_cls = entity_model(self._association)
def __init__(self, parent): QListView.__init__(self, parent) self.mFieldProxyModel = QgsFieldProxyModel(self) self.setModel(self.mFieldProxyModel) self.activated.connect(self.indexChanged)
def __init__(self, parent=None): QWidget.__init__(self, parent) layerList = QgsProject.instance().layerTreeRoot().findLayers() self.iface = iface """for layer in layerList: print(layer.name())""" self.selectedLayers = [] layout = QVBoxLayout() self.model = QStandardItemModel() self.select_all_cb = QCheckBox('Check All') self.select_all_cb.setChecked(True) self.select_all_cb.setStyleSheet('margin-left: 5px; font: bold') #self.select_all_cb.stateChanged.connect(lambda: selectAllCheckChanged(select_all_cb, model)) layout.addWidget(self.select_all_cb) self.view = QListView() self.view.setEditTriggers(QAbstractItemView.NoEditTriggers) self.view.setSelectionMode(QAbstractItemView.NoSelection) self.view.setSelectionRectVisible(False) for layer in layerList: item = QStandardItem(layer.name()) # item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) # item.setData(QVariant(Qt.Checked), Qt.CheckStateRole) item.setCheckable(True) item.setSelectable(False) item.setCheckState(QtCore.Qt.Checked) self.model.appendRow(item) self.selectedLayers.append(item) self.view.setModel(self.model) #view.clicked.connect(lambda: listviewCheckChanged(item, model, select_all_cb)) layout.addWidget(self.view) self.setLayout(layout) """if parent:
class checkableMapLayerList(QWidget): # create a checkable list of the map layers def __init__(self, parent=None): QWidget.__init__(self, parent) layerList = QgsProject.instance().layerTreeRoot().findLayers() self.iface = iface """for layer in layerList: print(layer.name())""" self.selectedLayers = [] layout = QVBoxLayout() self.model = QStandardItemModel() self.select_all_cb = QCheckBox('Check All') self.select_all_cb.setChecked(True) self.select_all_cb.setStyleSheet('margin-left: 5px; font: bold') #self.select_all_cb.stateChanged.connect(lambda: selectAllCheckChanged(select_all_cb, model)) layout.addWidget(self.select_all_cb) self.view = QListView() self.view.setEditTriggers(QAbstractItemView.NoEditTriggers) self.view.setSelectionMode(QAbstractItemView.NoSelection) self.view.setSelectionRectVisible(False) for layer in layerList: item = QStandardItem(layer.name()) # item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) # item.setData(QVariant(Qt.Checked), Qt.CheckStateRole) item.setCheckable(True) item.setSelectable(False) item.setCheckState(QtCore.Qt.Checked) self.model.appendRow(item) self.selectedLayers.append(item) self.view.setModel(self.model) #view.clicked.connect(lambda: listviewCheckChanged(item, model, select_all_cb)) layout.addWidget(self.view) self.setLayout(layout) """if parent: parent.setLayout(layout) else: window = QWidget() window.setLayout(layout)""" #window.show() def selectAllCheckChanged(self, select_all_cb, model): TOMsMessageLog.logMessage("IN selectAllCheckChanged", level=Qgis.Info) for index in range(model.rowCount()): item = model.item(index) if item.isCheckable(): if select_all_cb.isChecked(): item.setCheckState(QtCore.Qt.Checked) self.selectedLayers.append(item) else: item.setCheckState(QtCore.Qt.Unchecked) self.selectedLayers.remove(item) TOMsMessageLog.logMessage( "IN selectAllCheckChanged: len list {}".format( len(self.selectedLayers)), level=Qgis.Info) def listviewCheckChanged(self, model, select_all_cb): ''' updates the select all checkbox based on the listview ''' # model = self.listview.model() TOMsMessageLog.logMessage("IN listviewCheckChanged", level=Qgis.Info) items = [model.item(index) for index in range(model.rowCount())] if all(item.checkState() == QtCore.Qt.Checked for item in items): select_all_cb.setTristate(False) select_all_cb.setCheckState(QtCore.Qt.Checked) elif any(item.checkState() == QtCore.Qt.Checked for item in items): select_all_cb.setTristate(True) select_all_cb.setCheckState(QtCore.Qt.PartiallyChecked) else: select_all_cb.setTristate(False) select_all_cb.setCheckState(QtCore.Qt.Unchecked) def updateSelectedLayers(self, index): #QMessageBox.information(self.iface.mainWindow(), "debug", "IN updateSelectedLayers: {}".format(self.model.itemFromIndex(index))) TOMsMessageLog.logMessage("IN updateSelectedLayers: {}".format(index), level=Qgis.Info) item = self.model.itemFromIndex(index) if item.checkState() == QtCore.Qt.Checked: self.selectedLayers.append(item) else: self.selectedLayers.remove(item) def getSelectedLayers(self): return self.selectedLayers