QTreeview遍历列表
问题描述:
我需要通过键盘箭头键按钮按钮的方式遍历QTreeview列表。我可以用它跳转到最后一项,但它不会遍历整个列表,它只是跳到最后一项。QTreeview遍历列表
for(int i = 0; i < ui->TList_Tree->topLevelItemCount(); ++i)
{
ui->TList_Tree->setCurrentIndex(ui->TList_Tree->currentIndex().sibling(i,0));
}
我敢肯定我在这里错过了一些简单的东西。
答
我上面的评论错过了相当明显的QTreeView::indexAbove
和QTreeView::indexBelow
。所以,你的按钮,光标上下移动应该连接到代码,不会沿着线的东西...
QModelIndex index = ui->TList_Tree->indexBelow(ui->TList_Tree->currentIndex());
if (index.isValid())
ui->TList_Tree->setCurrentIndex(index);
做了一个快速检查,这似乎做你想要的。
+0
是的,这是非常有益的谢谢你。我明白这里发生了什么。我们得到的指数低于我们目前所在的位置,如果它有效,就转向它。 – bauervision
如果你可以从'QTreeView'继承,那么你可以使用['QTreeView :: moveCursor'](http://doc.qt.io/qt-5/qtreeview.html#moveCursor)。 –
伟大的想法,这是我迄今为止,但它告诉我moveDown是特定的。我找不到任何有关如何实际使用moveCursor的好例子。 ui-> TList_Tree-> moveCursor(QAbstractItemView :: MoveDown,Qt :: NoModifier); – bauervision
我也试过: QModelIndex ui-> TList_Tree-> moveCursor(QAbstractItemView :: MoveDown,Qt :: NoModifier); 但错误表示它期望在ui之后的 - >标记之前使用initialzer。 – bauervision