比如现在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就容易了。
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
除了一楼的方法,你还可以试一下下面的函数。
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楼和 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就容易了。
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
除了一楼的方法,你还可以试一下下面的函数。
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楼和 5楼的帮忙。多亏你们提供思路。 thank you!