我尝试使用箭头键在QTreeView中选择一个项目,但找不到属于此类的方法,该方法返回突出显示项目的索引。 到目前为止,我只能通过点击鼠标选择项目:
connect(m_QTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(ItemTreeClicked(QModelIndex)));
但如果我尝试使用键盘箭头更改焦点,则不会更新当前索引。 说实话,即使是我的鼠标点击"版本并不完美,因为我已经使用了一个初始化为false的布尔值,并在我进入插槽ItemTreeClicked时传递给了true。我不得不这样做,因为当我尝试从列表中删除某个项目时,如果我还没有点击任何内容,那么我的应用程序崩溃了。
我在QtCreator 4.7.4上用c ++编码
非常感谢任何帮助或示例代码。
干杯。
答案 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);
}
注意:这只是一个想法,我目前无法对其进行测试,因此如果您想尝试一下,可能需要稍微调整一下