You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt中如何通过代码跳转到选中行?(基于QTreeView和QSortFilterProxyModel)

解决QTreeView选中行后自动跳转的问题

要实现选中指定行后自动滚动到该行,只需在选中操作后调用QTreeView的scrollTo()方法即可,该方法能将目标索引对应的行滚动到视图的可见区域内。

修改后的代码示例

// 此处确定之前保存的索引(_lastAddObjectIndex 为 QModelIndex 类型)
QModelIndex next_index = _proxyModel->index(_lastAddObjectIndex.row(), 0);

// 先校验索引有效性,避免无效操作
if (next_index.isValid()) {
    // 选中目标行
    view->selectionModel()->select(next_index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows | QItemSelectionModel::SelectCurrent);
    // 自动滚动到该行,确保行处于视图可见区域
    view->scrollTo(next_index, QTreeView::EnsureVisible);
}

关键参数说明

scrollTo()的第二个参数可以控制滚动后的对齐方式,常用选项有:

  • QTreeView::EnsureVisible:确保目标行完全处于视图可见区域(默认值)
  • QTreeView::PositionAtTop:将目标行滚动到视图顶部
  • QTreeView::PositionAtBottom:将目标行滚动到视图底部
  • QTreeView::PositionAtCenter:将目标行滚动到视图中央

根据实际需求选择合适的对齐方式即可。另外,必须先判断next_index是否有效——经过QSortFilterProxyModel过滤后,原模型的索引可能在代理模型中不存在,无效索引会导致scrollTo()不生效。

内容的提问来源于stack exchange,提问作者Vadim Kiselev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:45:33