Witam,
Próbuje stworzyć funkcję, która będzie zaznaczać wszystkie odznaczone (a druga przeciwne: odznaczać wszystkie) Checkboxy z listy umieszczonej w treeView.
Mam problem z pobraniem danych z treeView, gdyż dane do niego trafiają z oddzielnej funkcji (podanej poniżej).
Testowałem wiele wariantów poboru danych, ale żaden nie przeszedł (choć wzorowałem się z dokumentacji Qt i tego:
https://stackoverflow.com/questions/2953...-in-python).
Poniżej załączam kod
Kod:
def Zaznaczwszystko(self):#albo if self.dlg.checkBox.isChecked()
checkBoxList = QStandardItem.read(self.dlg.treeView)# albo self.dlg.treeView.rootIndex() #albo self.dlg.treeView.expand(str(2))
print(checkBoxList)
# drugi wariant:
#if self.dlg.checkBox.isChecked() ==True:
# checkBoxList.setCheckState(Qt.Checked)
for checks in checkBoxList:
checks.setChecked(checked)#albo child.setCheckState(Qt.Checked)
#uruchamia przycisk odznacz wszystko
def Odznaczwszystko(self):
checkBoxList = self.dlg.treeView.expand()
for checks in checkBoxList:
checks.setChecked(unchecked) #albo child.setCheckState(Qt.Unchecked)
tutaj zaś jest funkcja tworząca treeView:
Kod:
def kontrolaBDOTwczyt(self):
path = str(self.controlPath).replace('\\','/') + '/' + self.dlg.comboBox_4.currentText()
tree = et.parse(path)#parsowanie XML-a
root = tree.getroot()
wersjaSzablonuKontroli = root.get('version')
self.dlg.label_8.setText('Wersja szablonu: '+str(wersjaSzablonuKontroli))
#z root musi wyciągać tag 'version'
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)
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()
Dodaje jeszcze zrzut jak to wygląda. Funkcje mają uruchomić się ze dwóch poniżej umieszczonych przycisków