当 QTreeView 和 QAbstractItemModel 关联后,双击不能跳转可能是因为没有正确地设置 QTreeView 的信号和槽。在 QTreeView 中,双击触发的信号是 doubleClicked,可以通过连接该信号和自定义槽函数实现双击跳转的功能。
下面是一个例子,其中 model 是一个 QAbstractItemModel 派生类的指针,view 是一个 QTreeView 对象:
connect(view, &QTreeView::doubleClicked, this, &MainWindow::onDoubleClick);
void MainWindow::onDoubleClick(const QModelIndex &index)
{
if (index.isValid()) {
view->expand(index);
view->scrollTo(index, QAbstractItemView::PositionAtCenter);
}
}
这里将 QTreeView 的 doubleClicked 信号连接到了一个自定义的槽函数 onDoubleClick,并且在该槽函数中使用 expand 方法展开选中的项,使用 scrollTo 方法将视图滚动到选中项的中心位置。
注意,在该例子中,MainWindow 继承自 QObject,所以可以直接将其作为连接函数的参数,如果你的类不是 QObject 的子类,则需要先将该类对象注册为元类型,再进行连接操作。