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

Selecting items in a QTreeView with keyboard arrows

本文关键字:QTreeView 项目 选择 键盘      更新时间:2023-10-16

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

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

但是如果我尝试用键盘箭头改变焦点,则当前索引不会更新。老实说,即使是我的"鼠标点击"版本也不完美,因为我使用了一个布尔值,当我进入ItemTreeClickd插槽时,它被初始化为false并传递为true。我不得不这么做,因为当我试图从列表中删除一个项目时,如果我还没有点击任何东西,我的应用程序就会崩溃。

我在QtCreator 4.7.4 上用c++编码

任何帮助或示例代码都将不胜感激。

干杯。

也许您可以将QTreeView子类化并覆盖keyPressEvent方法,以便它更改当前索引?

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);
}

注意:这只是一个想法,我现在还不能测试它,所以如果你想试用

,你可能需要调整一下