Przemieszczanie się strzałkami po QTreeWidget

0

Zauważyłem że moja apka wysypuje się jeśli w nacisnę strzałkę w bok lub w prawo gdy mam zaznaczone pewne elementy w drzewie (te które mogę zwijać i rozwijać). Stwierdziłem że nie potrzebuje nawigacji strzałkami w bok i w prawo i szybko zreimplementowałem keyPressEvent:

void MyTree::keyPressEvent(QKeyEvent *e)
{
   if(e->key() == Qt::Key_Left || e->key() == Qt::Key_Right){
        e->ignore();
    }
   else{
       e->accept();
   }
}

Problem w tym że reimplementując event przestała mi działać nawigacja "góra-dół", mimo że debugger pokazuje że naciskając te klawisze poprawnie jest wywoływany accept(), tylko co z tego jeśli kursor zaznaczenia nie przeskakuje. Klawisz contextMenu działa i menu kontekstowym mogę normalnie sie poruszać strzałkami góra-dół. Czy muszę teraz pisać kod dla zdarzeń Qt::Key_Up i Qt::Key_Down czy po prostu czegoś nie ustawiłem? A może inaczej mogę sobie "wyłączyć" eventy strzałek prawo-lewo?

0

Spróbuj

void MyTree::keyPressEvent(QKeyEvent *e)
{
   if(e->key() == Qt::Key_Left || e->key() == Qt::Key_Right){
        e->ignore();
    }
   else{
       QTreeWidget::keyPressEvent(e); // wołanie bazowego dla reszty zdarzeń
   }
}

Jeśli dobrze pamiętam nie trzeba robić accept().

1 użytkowników online, w tym zalogowanych: 0, gości: 1