以下のスクリーンショットでは、QListWidget
多数の がランダムに取り込まれQListWIdgetItems
、wordWrap
有効になってscrollBar
おり、右側に が表示されています (選択された項目に注意してください)。
私がQListWidgetItem
求めているのは、 に対する各 (目に見える) の y 位置ですQListWidget.viewport()
。
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 座標を見つけるスマートな方法はありますか?