ListViewItem застрял в состоянии мыши над, когда мышь покидает QListView - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь удалить состояние наведения мыши из элемента, когда курсоры мыши покидают QListview.

Я проверяю состояние при наведении мыши в QStyledItemDelegate следующим образом:

void MyDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
    if( option.state & QStyle::State_MouseOver)
     {
        // Paint in MouseOver state
     }
     else
     {
        // Paint normally
     }
 }

Затем я реализовал в своем QListView функцию leftEvent для вызова update.

void MyListView::leaveEvent(QEvent *event)
{
   // update();  
   QListView::leaveEvent(event);
   update();   // Same result if update() called before or after QListView::leaveEvent 
}

Это делаетвызовите метод рисования делегата в отпуске, но не изменяет состояние наведения элемента, который последний раз находился в QListView.

Есть ли способ заставить делегата перерисоваться и не быть в состоянии наведения мыши, когда курсор покидает вид списка?

Я использую Qt 5.6 и я тестировал это на Centos7 и Fedora 27 и 28.

1 Ответ

0 голосов
/ 30 мая 2018

Это похоже на ошибку в версии QT 5.6.Я обновил версию QT до 5.11, и это решило проблему.Нет необходимости реализовывать QListView :: exitEvent после обновления.

Я также протестировал код на QT 5.10, и там он работает нормально.

...