Grund
Während der Entwicklung kann es vorkommen, dass QTreeWidget bedient wird. Beim Klicken auf feiQTreeWidgetItem muss der Fokus aufgehoben werden und es wird kein Element ausgewählt.
Lösung
Dies kann durch das Setzen von Ereignisfiltern erreicht werden.
1.QtreeWidget-Installationsereignisfilter
ui->treeWidget->viewport()->installEventFilter(this);
2. Schreiben Sie die Funktion eventFliter() neu
Wenn sich der Cursor nicht auf dem Element befindet, setzen Sie den aktuellen Elementindex auf leer
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
if(ui->treeWidget->viewport() == watched)
{
if(event->type() == QEvent::MouseButtonPress)
{
QMouseEvent *pME = (QMouseEvent*)event;
if(pME->buttons() & Qt::LeftButton)
{
QModelIndex index = ui->treeWidget->indexAt(pME->pos());
if(!index.isValid())
{
ui->treeWidget->setCurrentIndex(QModelIndex());
}
}
}
}
return QMainWindow::eventFilter(watched, event);
}
Wirkung
选中状态
:
点击空白
:
abschließend
用行动祈祷比用言语更能够使上帝了解
。