使用键盘箭头选择QTreeView中的项目
Selecting items in a QTreeView with keyboard arrows
我试图用箭头键在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);
}
注意:这只是一个想法,我现在还不能测试它,所以如果你想试用
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 更新 QTreeView 和 QListView 中的项目
- 如何使用QTreeView在QComboBox中选择项目
- 从 QTreeView 中删除项目时取消选择所有行
- 使用QTREEVIEW中的Qcombobox委托项目
- 无法通过 QModelIndex 从 QTreeView 获取项目
- QTreeView 项目悬停/基于当前颜色选择的背景颜色
- 循环浏览所有项目,其中QTREEVIEW QFILESYSTEMMODEL上具有所需的文件扩展名
- 如何从QTreeView中的项目获取索引
- QTreeView中可见项目的列表
- QTreeView模型的Qt-itemChanged信号仅适用于一级项目
- 如何在QTreeView中获取所选项目
- 如何确切知道用户何时扩展QTreeView项目
- 在拖放操作中交换QTreeView项目
- QTreeView 使用示例 - 如何将子节点添加到现有项目
- 如何检查在QTreeView中是否有任何项目正在编辑
- 如何知道QTreeView项目装饰被点击
- 使用键盘箭头选择QTreeView中的项目
- 筛选QStandardItemModel或QTreeView中的项目
- 右键单击QTreeView项目