2
在下面的屏幕截图是QListWidget
与许多随机填充,启用wordWrap
,并与在右侧一个scrollBar
(注意选择的项目)。PyQt的派生QListWidgetItems的Y象素坐标当前可见在QListWidget
我所追求的是每个(可见的)QListWidgetItem
相对于QListWidget.viewport()
的y位置。
现在,我通过走在QListWidget.viewport().geometry()
与像素距离相当于白线高度(这里:29个像素)一个的y范围达到此目的,施加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坐标?