使用键盘箭头选择QTreeView中的项目

时间:2014-04-11 07:34:50

标签: c++ qt qtreeview

我尝试使用箭头键在QTreeView中选择一个项目,但找不到属于此类的方法,该方法返回突出显示项目的索引。 到目前为止,我只能通过点击鼠标选择项目:

connect(m_QTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(ItemTreeClicked(QModelIndex)));

但如果我尝试使用键盘箭头更改焦点,则不会更新当前索引。 说实话,即使是我的鼠标点击"版本并不完美,因为我已经使用了一个初始化为false的布尔值,并在我进入插槽ItemTreeClicked时传递给了true。我不得不这样做,因为当我尝试从列表中删除某个项目时,如果我还没有点击任何内容,那么我的应用程序崩溃了。

我在QtCreator 4.7.4上用c ++编码

非常感谢任何帮助或示例代码。

干杯。

1 个答案:

答案 0 :(得分:0)

也许您可以继承QTreeView并覆盖keyPressEvent方法,以便更改current index

myqtreeview::keyPressEvent(QKeyEvent* event){

    QModelIndex qmi = this->currentIndex();

    if(event->key() == Qt::Key_Down){
        this->setCurrentIndex(QAbstractItemModel::createIndex(qmi->row()+1, qmi->column()));
    }else{
        ...
    }
    QTreeView::keyPressEvent(event);
}

注意:这只是一个想法,我目前无法对其进行测试,因此如果您想尝试一下,可能需要稍微调整一下