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

效果

选中状态
【Qt】点击QTreeWidget空白处,使当前选择的Item失效_第1张图片
点击空白:
【Qt】点击QTreeWidget空白处,使当前选择的Item失效_第2张图片

结论

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

你可能感兴趣的:(Qt记录,qt,开发语言)