【Qt】点击QTreeWidget空白处,使当前选择的Item失效

原因

有时在开发中,可能会对QTreeWidget进行操作,当点击feiQTreeWidgetItem时,需要焦点取消,无Item选中。

解决方案

可以通过设置事件过滤器进行实现。

1.QtreeWidget安装事件过滤器

ui->treeWidget->viewport()->installEventFilter(this);

2.重写eventFliter()函数
如果光标不在Item上,就设置当前Item下标为空

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);
}

效果

选中状态
在这里插入图片描述
点击空白:
在这里插入图片描述

结论

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

猜你喜欢

转载自blog.csdn.net/MrHHHHHH/article/details/135001896