如何获取ListWidget中显示的内容是位于列表中的哪个范围

时间:2022-09-20 19:48:02
请教大神,怎么能够获取到ListWidget中显示的内容在QListWidgetItems中的哪个范围;

比如现在ListWidget中有100个Item, 但是现在显示在屏幕上的只有10个,其他的需要通过scrollbar来显示。

那怎样才能确定现在显示的Item在QListWidgetItems中位于哪个范围? 比如是15-25的。 

想知道怎么能确定这个范围?

6 个解决方案

#1


参考这个函数:
QModelIndex QAbstractItemView::indexAt(const QPoint & point) const [pure virtual]
Returns the model index of the item at the viewport coordinates point.

viewport的可见rect是能够取得的,然后计算最上面和最下面可见的index就容易了。

#2


没太明白,能详细说下吗?

#3


能否给点明示,研究了一下,还是没弄明白。。

#4


拿到QModelIndex 这个之后 如何对应QListWidgetItems中的索引

#5


对于较大的模型,建议你使用QListView和QstandardModel的modelView模型。而不要使用ListWidget这种类型。
除了一楼的方法,你还可以试一下下面的函数。
QScrollBar::
void setMaximum ( int )
void setMinimum ( int )
void setPageStep ( int )
思路是,你有多少张图片,你就设置最大值是多少,然后设置Step每一行的图片数。那么就可以从scrollBar的当前值,读出现在大概显示的是哪些图片了。函数如:int sliderPosition () const

#6


最终的解决方案是:m_listwidget->indexAt(m_listwidget->viewport()->contentsRect().center()).row();

非常感谢1楼和 5楼的帮忙。多亏你们提供思路。  thank you!

#1


参考这个函数:
QModelIndex QAbstractItemView::indexAt(const QPoint & point) const [pure virtual]
Returns the model index of the item at the viewport coordinates point.

viewport的可见rect是能够取得的,然后计算最上面和最下面可见的index就容易了。

#2


没太明白,能详细说下吗?

#3


能否给点明示,研究了一下,还是没弄明白。。

#4


拿到QModelIndex 这个之后 如何对应QListWidgetItems中的索引

#5


对于较大的模型,建议你使用QListView和QstandardModel的modelView模型。而不要使用ListWidget这种类型。
除了一楼的方法,你还可以试一下下面的函数。
QScrollBar::
void setMaximum ( int )
void setMinimum ( int )
void setPageStep ( int )
思路是,你有多少张图片,你就设置最大值是多少,然后设置Step每一行的图片数。那么就可以从scrollBar的当前值,读出现在大概显示的是哪些图片了。函数如:int sliderPosition () const

#6


最终的解决方案是:m_listwidget->indexAt(m_listwidget->viewport()->contentsRect().center()).row();

非常感谢1楼和 5楼的帮忙。多亏你们提供思路。  thank you!