Здравствуйте.
Проблема пришла откуда не ждал. Вроде простая операция, а допереть не могу.
Есть одна тян 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?