2016-09-29 502 views
1

我需要通过键盘箭头键按钮按钮的方式遍历QTreeview列表。我可以用它跳转到最后一项,但它不会遍历整个列表,它只是跳到最后一项。QTreeview遍历列表

for(int i = 0; i < ui->TList_Tree->topLevelItemCount(); ++i) 
    { 
     ui->TList_Tree->setCurrentIndex(ui->TList_Tree->currentIndex().sibling(i,0)); 
    } 

我敢肯定我在这里错过了一些简单的东西。

+0

如果你可以从'QTreeView'继承,那么你可以使用['QTreeView :: moveCursor'](http://doc.qt.io/qt-5/qtreeview.html#moveCursor)。 –

+0

伟大的想法,这是我迄今为止,但它告诉我moveDown是特定的。我找不到任何有关如何实际使用moveCursor的好例子。 ui-> TList_Tree-> moveCursor(QAbstractItemView :: MoveDown,Qt :: NoModifier); – bauervision

+0

我也试过: QModelIndex ui-> TList_Tree-> moveCursor(QAbstractItemView :: MoveDown,Qt :: NoModifier); 但错误表示它期望在ui之后的 - >标记之前使用initialzer。 – bauervision

回答

0

我上面的评论错过了相当明显的QTreeView::indexAboveQTreeView::indexBelow。所以,你的按钮,光标上下移动应该连接到代码,不会沿着线的东西...

QModelIndex index = ui->TList_Tree->indexBelow(ui->TList_Tree->currentIndex()); 
if (index.isValid()) 
    ui->TList_Tree->setCurrentIndex(index); 

做了一个快速检查,这似乎做你想要的。

+0

是的,这是非常有益的谢谢你。我明白这里发生了什么。我们得到的指数低于我们目前所在的位置,如果它有效,就转向它。 – bauervision