我正在使用 QTreeView , selectionMode 设置为 ExtendedSelection 。每当使用箭头键更改当前项目(焦点)时,我想更改清除所选项目的默认行为。
是否可以进行设置,以便当我使用箭头键进行导航时,选择保持且只有当前项目(焦点)更改(与使用时的工作方式相同)按Ctrl +箭头)。我基本上需要交换(箭头与Ctrl +箭头)的行为,或者只是按Ctrl +箭头般的行为,即使没有按下Ctrl键。
这可能吗?
谢谢, FIPS
答案 0 :(得分:2)
这是一个很好的问题,因为您需要使用的功能有点模糊。您将不得不继承QTreeView并覆盖keyPressEvent()
函数。这应该让你走上正轨:
class MyTree : public QTreeWidget
{
Q_OBJECT
protected:
void keyPressEvent( QKeyEvent *event )
{
if( event->key() == Qt::Key_Up )
{
selectionModel()->setCurrentIndex( indexAbove(currentIndex()), QItemSelectionModel::NoUpdate );
}
else if( event->key() == Qt::Key_Down )
{
selectionModel()->setCurrentIndex( indexBelow(currentIndex()), QItemSelectionModel::NoUpdate );
}
else
{
QTreeWidget::keyPressEvent( event );
}
}
};