Как настроить QTreeView для сохранения множественного выбора при перемещении с помощью клавиш со стрелками - PullRequest
3 голосов
/ 20 января 2012

Я использую QTreeView с selectionMode , установленным на ExtendedSelection . Я хотел бы изменить поведение по умолчанию, которое очищает выбранные элементы каждый раз, когда клавиша со стрелкой используется для изменения текущего элемента (фокус).

Можно ли настроить его так, чтобы при использовании клавиши со стрелкой для навигации выделение сохранялось, и только текущий элемент (фокус) изменял (так же, как он работает при использовании Ctrl + Стрелка). В основном мне нужно поменять местами поведение (Стрелка против Ctrl + Стрелка) или просто использовать Ctrl + Стрелковое поведение, даже когда Ctrl не нажат.

Это возможно?

Спасибо, ФИПС

1 Ответ

2 голосов
/ 20 января 2012

Это хороший вопрос, так как функции, которые вам нужно использовать, немного неясны. Вам нужно будет создать подкласс 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 );
            }   
        }   
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...