PyQt4:如何获取 QlistWidget 的可见项目列表?
Posted
技术标签:
【中文标题】PyQt4:如何获取 QlistWidget 的可见项目列表?【英文标题】:PyQt4: How can I get a list of the visible items of a QlistWidget? 【发布时间】:2014-03-27 09:59:32 【问题描述】:我正在尝试为 QlistWidget 中的项目动态加载(在其他线程中,因此它不会阻塞)不同的图标。但是列表很大,所以我只对加载那个精确时间显示的项目的图标感兴趣。 有没有办法获取 QlistWidget 的可见项目列表?
谢谢
【问题讨论】:
【参考方案1】:获取可视区域顶部和底部的索引,然后遍历它们包含的索引范围:
def visibleItems(listwidget):
rect = listwidget.viewport().contentsRect()
top = listwidget.indexAt(rect.topLeft())
if top.isValid():
bottom = listwidget.indexAt(rect.bottomLeft())
if not bottom.isValid():
bottom = listwidget.model().index(listwidget.count() - 1)
for index in range(top.row(), bottom.row() + 1):
yield listwidget.item(index)
【讨论】:
【参考方案2】:虽然我得到了更好的方法,但我发现了一种丑陋的方法:
rectangle = parent.geometry()
midx = rectangle.left() + (( rectangle.right() - rectangle.left()) / 2)
y=rectangle.top()
itemlist = []
while y < rectangle.bottom():
y += 10 # random value just to not check every pixel.
item = parent.itemAt(midx, y)
if item not in itemlist and item is not None:
itemlist.append(item)
更好的解决方案?
【讨论】:
以上是关于PyQt4:如何获取 QlistWidget 的可见项目列表?的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4:将项目从一个 QListWidget 移动到另一个
Python PyQt4 QFileDialog 图像并在 QListWidget 中加载