Когда я перемещаю текущий индекс с помощью Key_Up или Key_Down в treeView , я обнаружил, что перемещенный текущий индекс применяется только после этой строки return QWidget::eventFilter(watched, event);
.Как я могу получить недавно перемещенный индекс до return QWidget::eventFilter(watched, event);
?Я попытался изменить перемещенный текущий индекс вручную с помощью currentIndex = currentIndex-1;
, но это не сработало.
bool TipManager::eventFilter(QObject *watched, QEvent *event)
{
if(watched == ui->treeView && event->type() == QEvent::KeyPress){
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
QModelIndex currentIndex = ui->treeView->currentIndex();
if( keyEvent->key() == Qt::Key_Up )
{
//currentIndex = currentIndex-1;
}
if( keyEvent->key() == Qt::Key_Down )
{
//currentIndex = currentIndex+1;
}
if(currentIndex.isValid())
{
ui->treeView->setCurrentIndex(currentIndex);
trimCurrentPath(currentIndex);
}
}
return QWidget::eventFilter(watched, event);
}