当前位置: 代码迷 >> QT开发 >> 怎么获取ListWidget中显示的内容是位于列表中的哪个范围
  详细解决方案

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

热度:30   发布时间:2016-04-25 03:39:57.0
如何获取ListWidget中显示的内容是位于列表中的哪个范围
请教大神,怎么能够获取到ListWidget中显示的内容在QListWidgetItems中的哪个范围;

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

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

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

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

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

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