:
protected:
bool eventFilter(QObject *obj, QEvent *event);//in header
및
qApp->installEventFilter(this);//in constructor
당신이 사용하지 않는 경우 :
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == ui->listView && event->type() == QEvent::FocusOut)
{
//when view loses focus we highlight current item
ui->listView->selectionModel()->select(ui->listView->currentIndex(), QItemSelectionModel::Select);
}
if (obj == ui->listView && event->type() == QEvent::FocusIn)
{
//when view gets focus we clear selection
ui->listView->selectionModel()->clear();
ui->listView->selectionModel()->select(ui->listView->currentIndex(), QItemSelectionModel::Select);
}
return QObject::eventFilter(obj, event);
}
당신도해야 eventFilter
를 사용하려면 이벤트 필터를 서브 클래 싱하여 focusInEvent (QFocusEvent * event)
및 focusOutEvent (QFocusEvent * event)
을 다시 구현하고 동일한 작업을 수행 할 수 있습니다. 에스.
방금 시도했으나하지 않습니다. 원하는 것을 선택하십시오. 나는 초점에있는 현재 색인을 선택한다. 하나의 문제는 선택 항목이 현재 색인 강조 표시와 다르게 보입니다. 두 번째 문제는 현재 색인이 위젯 외부에서 변경된다는 것이고 현재 색인을 항상 올바르게 표시하려면 위젯이 필요하다는 것입니다. – tach
@tach 당신이 바깥 쪽을 바꿀 때 또한 'ui-> listView-> selectionModel() -> clear();'012-> listView-> selectionModel() -> select (ui-> listView-> model()) -> index (0,0), QItemSelectionModel :: Select); 그리고 모두 괜찮을 것이다. 선택의 색이 절대적으로 중요합니까? – Chernobyl
실제로 색이 다른 경우보기 흉하게 보일 것입니다. 그것은 전적으로 거래를 깨는 것은 아니지만 그것은 아주 나쁩니다. 실제로 차라리 현재 항목을 다르게 강조 할 것입니다. 예 : 굵은 글꼴 대체 색상. – tach