QTableView::rect() 和 QTableView::geometry() 没有给出准确的结果
QTableView::rect() and QTableView::geometry() not giving accurate results
我有一个 QTableView,我需要实现一些翻页功能。
我通常将 QModelIndexes 传递给模型以确定它应该滚动到什么。
QModelIndex top = indexAt( rect().topLeft() ); // always good (row 0)
QModelIndex btm = indexAt( rect().bottomLeft() ); // always bad (last visible row + 4);
我已经对 rect().bottomLeft() 进行了一些处理,以在可见时说明 horizontalScrollBar(),但它仍然偏离 3 行。这是宜居的,但并不理想。我敢肯定,当字体大小不同时,对其进行黑客攻击并将其偏移静态行数会破坏它。
老实说,如果您可以告诉 QScrollBar 向上或向下滚动一个步骤,我会很好,但显然这太有意义了。
那 rect()
是什么?很可能你要的是错误的。请记住,这些视图是滚动区域,您应该关注的 rect()
是 viewport()
.
的视图
我有一个 QTableView,我需要实现一些翻页功能。
我通常将 QModelIndexes 传递给模型以确定它应该滚动到什么。
QModelIndex top = indexAt( rect().topLeft() ); // always good (row 0)
QModelIndex btm = indexAt( rect().bottomLeft() ); // always bad (last visible row + 4);
我已经对 rect().bottomLeft() 进行了一些处理,以在可见时说明 horizontalScrollBar(),但它仍然偏离 3 行。这是宜居的,但并不理想。我敢肯定,当字体大小不同时,对其进行黑客攻击并将其偏移静态行数会破坏它。
老实说,如果您可以告诉 QScrollBar 向上或向下滚动一个步骤,我会很好,但显然这太有意义了。
那 rect()
是什么?很可能你要的是错误的。请记住,这些视图是滚动区域,您应该关注的 rect()
是 viewport()
.