LINUX.ORG.RU

[PyQt] QTreeWidgetItem и selectedIndexes()

 


0

1

Здравствуйте.

Проблема пришла откуда не ждал. Вроде простая операция, а допереть не могу.

Есть одна тян QTreeWidget, каждая строка - 4 поля. Выделение построчное. Нужно перебрать все выделенные строки (т.е. QTreeWidgetItem-ы).

Первое, что бросилось в глаза в документации QTreeWidget.selectedIndexes(). Вот только используя эту функцию перебираются не строки (содержащие по 4 поля), а отдельные поля. Я подумал - ерунда, и выдал на гора следующий код:

    itm = []
    x = 0
    for index in self.ui.treExportProbes.selectedIndexes():
      i = self.ui.treExportProbes.model().data(index,QtCore.Qt.DisplayRole)
      itm.append(i)
      x = x + 1
      if x == 4:
        self.patLst.changeProbeStatus( itm[0].toString(), str(itm[2].toString()), itm[3].toString() )
        itm = []
        x = 0

Вот только «for index in self.ui.treExportProbes.selectedIndexes()» перебирает поля не построчно, по очереди, слева на право, как ожидалось, а по своему, весьма хитрому принципу.

Обход выделенного происходит не просто по горизонтали, а в зависимости от количества выбранных элементов. Для одной выделенной строки - всё Ок. Для 2-х он берёт 2 с 3 столбца, и 2 с 4, для 3-ч он берет 1 с 3 и 3 с 4, для 4 он берет все 4 с 4.

Вот так и повис в воздухе вопрос - как перебрать выделенные item-ы в QTreeWidget?

Вообще-то есть selectedItems. Может у тебя версия старая? Или в питоне кривая реализация?

anonymous
()
Ответ на: комментарий от anonymous

поросячий визг

Спасибо!

2 дня бился втупую, а самого очевидного решения не заметил. Видимо глаз замылился :-)

billy_bob
() автор топика
Ответ на: поросячий визг от billy_bob

Ты, видимо, перепутал и смотрел документация к QTreeView.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.