C++ 使用键盘箭头在QTreeView中选择项目
我试图用箭头键在我的QTreeView中选择一个项目,但找不到属于此类的方法,该类返回突出显示项目的索引。 到目前为止,我只能通过单击鼠标来选择项目:C++ 使用键盘箭头在QTreeView中选择项目,c++,qt,qtreeview,C++,Qt,Qtreeview,我试图用箭头键在我的QTreeView中选择一个项目,但找不到属于此类的方法,该类返回突出显示项目的索引。 到目前为止,我只能通过单击鼠标来选择项目: connect(m_QTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(ItemTreeClicked(QModelIndex))); 但是,如果我尝试用键盘箭头更改焦点,则当前索引不会更新。 老实说,即使是我的“鼠标点击”版本也不是完美的,因为我使用了一个布尔值,当我进入插槽ItemTree
connect(m_QTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(ItemTreeClicked(QModelIndex)));
但是,如果我尝试用键盘箭头更改焦点,则当前索引不会更新。
老实说,即使是我的“鼠标点击”版本也不是完美的,因为我使用了一个布尔值,当我进入插槽ItemTreeClicked时,它被初始化为false并传递为true。我不得不这么做,因为当我试图从列表中删除一个项目时,如果我还没有点击任何东西,我的应用程序就会崩溃
我在C++中对qtC造饰者4.7.4/p>进行编码
任何帮助或示例代码都将不胜感激
干杯。也许您可以将
QTreeView
子类化,并覆盖keyPressEvent
方法,使其更改
注意:这只是一个想法,我目前无法测试它,因此如果您想尝试它,可能需要对其进行一些调整您可以在
QTreeView::selectionChanged()
virtual function中处理选择更改,或者使用QItemSelectionModel::selectionChanged())
树视图选择模型的信号。至少在Qt5中,这是默认行为。箭头键在树中向上/向下和向内/向外移动。当然,只有在可以使用Qt5时才有用。
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);
}