QT6 QTableView怎么保持一行不滚动
时间: 2024-02-01 09:03:37 浏览: 116
在 Qt6 中,QTableView 控件的接口和 Qt5 略有不同,但是实现保持一行不滚动的方法是一样的。
要保持 QTableView 中的一行不滚动,可以通过设置 QTableView 的垂直滚动条的范围来实现。具体方法如下:
1. 获取要保持不滚动的行号,假设为 rowIndex。
2. 获取 QTableView 的垂直滚动条,可以通过 QTableView 的 verticalScrollBar() 函数获取。
3. 设置垂直滚动条的范围,使得 rowIndex 行的上方和下方都能够滚动,而 rowIndex 行本身不能滚动。具体实现如下:
```cpp
QScrollBar* vScrollBar = tableView->verticalScrollBar(); // 获取垂直滚动条
int rowHeight = tableView->rowHeight(rowIndex); // 获取行高
int rowTop = tableView->rowViewportPosition(rowIndex); // 获取行顶部位置
int rowBottom = rowTop + rowHeight; // 获取行底部位置
int scrollRangeTop = vScrollBar->minimum(); // 获取滚动条范围的最小值
int scrollRangeBottom = vScrollBar->maximum() - vScrollBar->pageStep(); // 获取滚动条范围的最大值
vScrollBar->setRange(scrollRangeTop, scrollRangeBottom); // 设置滚动条范围
vScrollBar->setValue(qMax(rowTop - rowHeight, scrollRangeTop)); // 将滚动条滚动到 rowIndex 行的上方
vScrollBar->setPageStep(rowHeight); // 设置滚动条的页大小为行高
```
这样,就可以保持 QTableView 中的一行不滚动了。
阅读全文