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

原因

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

解决方案

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

1.QtreeWidget安装事件过滤器

cpp 复制代码
ui->treeWidget->viewport()->installEventFilter(this);

2.重写eventFliter()函数

如果光标不在Item上,就设置当前Item下标为空

cpp 复制代码
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);
}

效果

选中状态

点击空白:

结论

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

相关推荐
冷雨夜中漫步8 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
m0_7369191010 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_9449347310 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
黎雁·泠崖11 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_7634724612 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
TechWJ12 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
lly20240612 小时前
C++ 文件和流
开发语言
m0_7066532312 小时前
分布式系统安全通信
开发语言·c++·算法
寻寻觅觅☆13 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++
杨了个杨898213 小时前
memcached部署
qt·websocket·memcached