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座標?