Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Zaznaczanie i odznaczanie Checkboxów z tree View
21-06-2022, 12:34,
#1
Zaznaczanie i odznaczanie Checkboxów z tree View
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


Załączone pliki Miniatury
   
24-06-2022, 09:54,
#2
RE: Zaznaczanie i odznaczanie Checkboxów z tree View
Po dyskusji na innej stronie forum znalazłem taki kod:

#Uruchamia przycisk zaznacz wszystko
def Zaznaczwszystko(self):
x = QStandardItemModel()
for checks in range(x.rowCount()):
x.item(checks).setCheckState(Qt.Checked)
print(checkList)
#uruchamia przycisk odznacz wszystko
def Odznaczwszystko(self):
x = QStandardItemModel()
for checks in range(x.rowCount()):
x.item(checks).setCheckState(Qt.Unchecked),

ale dalej nie działa, gdyż pobranie z TreeView przez QStandardItemModel nie działa
28-06-2022, 11:56,
#3
RE: Zaznaczanie i odznaczanie Checkboxów z tree View
Masz problem z biblioteką QT, a nie samym QGIS'em czy API QGIS'a więc odpowiedzi/pomocy szukał bym raczej na stacku, a nie na tym forum...
Nie wkleiłeś żadnego komunikatu o błędach... Nie bardzo wiadomo z czym jest problem.
Te 2 funkcje mają dostęp do treeView, które tworzysz trzecią funkcją?

Jak już pisałem, pytanie na stacka, ładnie i szczegółowo opisane, z dołączonym kodem.


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Sad Zaznaczanie pustego wiersza Mazur 1 5 743 16-04-2018, 14:44
Ostatni post: [wiki]
  zaznaczanie obiektów Roland_z_Gilead 3 15 250 06-02-2014, 00:00
Ostatni post: milena

Skocz do: