set toのQAbstractItemView
sayQListView
のインスタンスがあります。ウィジェットをアクティブにすると、現在のインデックスが強調表示されます。ただし、別のウィジェットにフォーカスすると、現在のインデックスが強調表示されなくなります。どのウィジェットにフォーカスがあるかに関係なく、現在のインデックスを常に強調表示する必要があります。selectionMode
Qt::NoSelection
QListView
質問する
465 次
1 に答える
1
これは、次のイベント フィルターで実行できます。
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
するには、次のことも行う必要があります。
protected:
bool eventFilter(QObject *obj, QEvent *event);//in header
と
qApp->installEventFilter(this);//in constructor
イベントフィルターを使用したくない場合は、ビューをサブクラス化して再実装focusInEvent ( QFocusEvent * event )
しfocusOutEvent ( QFocusEvent * event )
、同じことを行うことができます。
于 2014-11-10T19:03:53.683 に答える