В приведенном ниже скриншоте является QListWidget
случайным образом заполняется многими QListWIdgetItems
, wordWrap
включен, и с scrollBar
на правой стороне (обратите внимание на выбранный элемент).PyQt получить у пиксельных координат QListWidgetItems в настоящее время видны в QListWidget
То, что мне нужно, - это позиции y каждого (видимого) QListWidgetItem
относительно QListWidget.viewport()
.
К настоящему времени, я могу добиться этого, идя по у-диапазона QListWidget.viewport().geometry()
с расстоянием пикселей, эквивалентной высоту строки (здесь: 29 пикселей), применяя itemAt(0,y)
к QListWidget
и добавлять элементы Источника к списку , если они не все в этом.
код, как:
def reportItems(self):
l = self.listWidget
dy = l.item(0).font().pointSize()
ystart = l.viewport().geometry().y()
h = l.viewport().geometry().height()
print ystart, h, dy
itlist = []
itcomplist = []
for y in range(ystart, ystart+h, (29/8)*dy): #empirical value
i = l.itemAt(0, y)
if not i in itlist:
itlist.append(i)
itcomplist.append((y, l.row(i)))
for it in itcomplist:
y, i = it
print y, l.item(i).text()[:30]
Таким образом, кажется, не очень элегантно ко мне, так как это очень медленный и выполняет лишние запросы.
Есть ли более умный способ найти все координаты y?