[Qt] Klicken Sie auf die leere Stelle von QTreeWidget, um das aktuell ausgewählte Element ungültig zu machen.

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

选中状态
Fügen Sie hier eine Bildbeschreibung ein
点击空白:
Fügen Sie hier eine Bildbeschreibung ein

abschließend

用行动祈祷比用言语更能够使上帝了解

おすすめ

転載: blog.csdn.net/MrHHHHHH/article/details/135001896