QTableView当前索引被删除时,怎么不滑动
时间: 2024-01-21 10:05:12 浏览: 51
可以使用`QTableView::scrollTo()`函数将视图滚动到先前的索引位置。在当前索引被删除后,你可以使用`QTableView::currentIndex()`获取新的当前索引,然后使用`scrollTo()`函数将视图滚动到该位置。下面是一个示例代码:
```cpp
QModelIndex current = tableView->currentIndex();
model->removeRow(current.row());
tableView->scrollTo(current);
```
在这个示例中,`tableView`是一个`QTableView`对象,`model`是该表视图所使用的模型。当当前索引被删除后,首先获取新的当前索引,然后使用`scrollTo()`函数将视图滚动到该位置。这样就可以保持视图不会自动滑动到表格的顶部或底部。
相关问题
QTableView当前索引被删除时,如何才能避免滚动到底部
当QTableView中的当前索引被删除时,如果希望避免滚动到底部,可以通过以下方法实现:
1. 获取当前QTableView的滚动条位置。
2. 删除当前索引。
3. 设置QTableView的滚动条位置。
下面是一个示例代码:
```
QModelIndex currentIndex = ui->tableView->currentIndex(); // 获取当前索引
int scrollBarPosition = ui->tableView->verticalScrollBar()->value(); // 获取滚动条位置
model->removeRow(currentIndex.row()); // 删除当前索引所在的行
ui->tableView->verticalScrollBar()->setValue(scrollBarPosition); // 设置滚动条位置
```
这样做可以保持QTableView的滚动位置不变,并且在删除当前索引后继续保持当前视图状态。
qtableview滑动行滑动
在QTableView中滑动行是通过操作滚动条实现的。QTableView是Qt框架中常用的控件之一,用于展示和编辑表格数据。
要实现滑动行,首先需要获取QTableView中的滚动条。可以使用QTableView的verticalScrollBar()函数来获取垂直滚动条对象。
然后,可以通过操作滚动条的一些函数来实现行的滑动。常用的函数包括setValue()、value()和setSliderPosition()。
例如,要实现将第5行滑动到可见区域,可以使用以下代码:
QScrollBar *scrollBar = tableView->verticalScrollBar(); // 获取垂直滚动条对象
int targetValue = tableView->verticalHeader()->sectionViewportPosition(5); // 获取第5行的像素值
scrollBar->setValue(targetValue); // 设置滚动条的位置
这样,当代码执行后,QTableView就会滑动到第5行可见的位置。
需要注意的是,如果QTableView中的数据较多,可能需要进行懒加载,即只加载当前可见区域的数据,以提高性能。可以通过QAbstractItemModel的实现来实现懒加载。
总之,通过获取QTableView的滚动条对象,并操作滚动条的函数,可以实现行的滑动。
阅读全文