(Un)ChechkingAll from Tree View
- 
@JonB said in (Un)ChechkingAll from Tree View: @SGaist can you explain more what do you mean? 
- 
@JonB said in (Un)ChechkingAll from Tree View: @SGaist can you explain more what do you mean? @SGaist said in (Un)ChechkingAll from Tree View: When you want to change them all, go through all the items in your model and call setCheckState on them. - 
Do you know how to go through all the items/rows in your model? Suppose you wanted to print out (or change) the text of each item, like Kontrola atrybutowe,Kontrola 1,Kontrola 2, etc. How would you do that?
- 
Once you have the loop for 1, presumably you know how to call setCheckState(Qt.Checked)on each item visited.
 
- 
- 
- If put print (QStandardItemModel()) I gain: <PyQt5.QtGui.QStandardItemModel object at 0x00000229EA8F7160>
 all data in Tree View come from parsed xml (to variable tree) file (I can't publish them), by
 root = tree.getroot()and later for grupaKontroli in root: parent = QStandardItem(grupaKontroli.get('name')) QStandardItemModel.appendRow(parent) parent.setCheckable(True) setCheckState(Qt.Checked)- Answer for that is in function above
 This function in the end of main post 
- If put print (QStandardItemModel()) I gain: <PyQt5.QtGui.QStandardItemModel object at 0x00000229EA8F7160>
- 
- If put print (QStandardItemModel()) I gain: <PyQt5.QtGui.QStandardItemModel object at 0x00000229EA8F7160>
 all data in Tree View come from parsed xml (to variable tree) file (I can't publish them), by
 root = tree.getroot()and later for grupaKontroli in root: parent = QStandardItem(grupaKontroli.get('name')) QStandardItemModel.appendRow(parent) parent.setCheckable(True) setCheckState(Qt.Checked)- Answer for that is in function above
 This function in the end of main post @Karoluss96 
 No. I'm afraid you do not seem to have a grasp of models/what is going on. You might benefit from reading up on this in the documentation.The answer to, for example, how do I set every checkbox in my model would be: for i in range(model.rowCount()): model.item(i).setCheckState(Qt.Checked)If you want to only check items in and below some one particular node you would need to recurse down its descendants. But you asked for check every item. 
- If put print (QStandardItemModel()) I gain: <PyQt5.QtGui.QStandardItemModel object at 0x00000229EA8F7160>
- 
Looks useful, pretty and short, but I still didn't see its results- It need to take data from treeView! 
- 
Looks useful, pretty and short, but I still didn't see its results- It need to take data from treeView! @Karoluss96 said in (Un)ChechkingAll from Tree View: It need to take data from treeView! A QTreeViewdoes not store any data. It's a view onto a model. The model is where you store the data. @SGaist has said this, I have said this. I suggested you might like to read up on Qt model/view architecture.
- 
Please provide a minimal script a minimal script that creates your tree view and its content. We will then be able to reason on it properly to help you achieve your goal. 
- 
@SGaist said in (Un)ChechkingAll from Tree View: Please provide a minimal script a minimal script that creates your tree view and its content. We will then be able to reason on it properly to help you achieve your goal. OK, so I attached it; def kontrolBDOTread(self): #BDOT is a name of database path = str(self.controlPath).replace('\\','/') + '/' + self.dlg.comboBox_4.currentText() tree = et.parse(path)#parsing XML root = tree.getroot() wersjaSzablonuKontroli = root.get('version') self.dlg.label_8.setText('Wersja szablonu: '+str(wersjaSzablonuKontroli) model = QStandardItemModel() model.setHorizontalHeaderLabels(['Lista kontroli'])#Nagłówek self.dlg.treeView.setModel(model) self.dlg.treeView.setUniformRowHeights(True) i = 0 for grupaKontroli in root: parent = QStandardItem(grupaKontroli.get('name')) model.appendRow(parent) parent.setCheckable(True) parent.setCheckState(Qt.Checked) parent.setUserTristate(True) for kontrola in grupaKontroli: child = QStandardItem(kontrola.get('name')) child.setCheckable(True) child.setCheckState(Qt.Checked) parent.appendRow([child]) self.dlg.treeView.setFirstColumnSpanned(i, self.dlg.treeView.rootIndex(), True) i = i + 1 self.dlg.treeView.show()
- 
And how its looks like 
 
- 
By minimal script, I meant a script that we can run ourselves on our machines which is not possible with what you posted. 
- 
Well, it's a UI plugin. It need to be a part of QGIS program (it's free on download by: https://qgis.org/pl/site/forusers/download.html) 
- 
The fact that you need to write a plugin for QGIS is currently unrelated to your issue hence why I am requesting a minimal script that creates a QTreeView with the model and the buttons you want. With that we can fix the current issue you have and you can then update your plugin code with that. 
- 
aaaa Ok, 
 The whole code is too long, as this tab is one of 5 which make this plugin, so I put only that what is here important:def __init__(self, iface): """Constructor. :param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. :type iface: QgsInterface """ # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join( self.plugin_dir, 'i18n', 'SystemBDOT10k{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) QCoreApplication.installTranslator(self.translator) # Declare instance attributes self.actions = [] self.menu = self.tr(u'&SystemBDOT10k') # Check if plugin was started the first time in current QGIS session # Must be set in initGui() to survive plugin reloads self.first_start = None # noinspection PyMethodMayBeStatic def tr(self, message): # noinspection PyTypeChecker,PyArgumentList,PyCallByClass return QCoreApplication.translate('SystemBDOT10k', message) def add_action( self, icon_path, text, callback, enabled_flag=True, add_to_menu=True, add_to_toolbar=True, status_tip=None, whats_this=None, parent=None): icon = QIcon(icon_path) action = QAction(icon, text, parent) action.triggered.connect(callback) action.setEnabled(enabled_flag) if status_tip is not None: action.setStatusTip(status_tip) if whats_this is not None: action.setWhatsThis(whats_this) if add_to_toolbar: # Adds plugin icon to Plugins toolbar self.iface.addToolBarIcon(action) if add_to_menu: self.iface.addPluginToMenu( self.menu, action) self.actions.append(action) return action def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" icon_path = ':/plugins/SystemBDOT10k/icon.png' self.add_action( icon_path, text=self.tr(u'SystemBDOT10k'), callback=self.run, parent=self.iface.mainWindow()) # will be set False in run() self.first_start = True def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" for action in self.actions: self.iface.removePluginMenu( self.tr(u'&SystemBDOT10k'), action) self.iface.removeToolBarIcon(action) def run(self): #sources paths self.qmlPath = Path(QgsApplication.qgisSettingsDirPath())/Path("python/plugins/SystemBDOT10k/BDOT10k_QML/") self.mainPath = Path(QgsApplication.qgisSettingsDirPath())/Path("python/plugins/SystemBDOT10k/") self.controlPath = Path(QgsApplication.qgisSettingsDirPath())/Path("python/plugins/SystemBDOT10k/Kontrole/") self.dlg = SystemBDOT10k_dialog() self.dlg.rejected.connect(self.close) self.dlg.pushButton_3.clicked.connect(self.CheckAll) self.dlg.pushButton_4.clicked.connect(self.UncheckAll) #download the names of template of controls filenames = next(walk(self.controlPath), (None, None, []))[2] for filename in filenames: self.dlg.comboBox_4.addItem(filename) self.dlg.comboBox_4.currentTextChanged.connect(self.kontrolBDOTread) self.kontrolBDOTread()The function kontrolBDOTread attached above my print screen. 
- 
Please, a minimal script import sys from QtXxx.QtWidgets import QTableView # additional imports app = QApplication(sys.argv) model = QStandardItemModel() # populate your model table_view = QTableView() table_view.setModel(model) # finish the ui sys.exit(app.exec())
 

