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

效果

选中状态

点击空白:

结论

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

相关推荐
电子硬件笔记15 小时前
Python语言编程导论第三章 编写程序
开发语言·python·编辑器
布谷歌15 小时前
在java中实现c#的int.TryParse方法
java·开发语言·python·c#
cooldream200915 小时前
当代 C++ 的三大技术支柱:资源管理、泛型编程与模块化体系的成熟演进
开发语言·c++
洲星河ZXH16 小时前
Java,集合框架体系
开发语言·windows
宠..16 小时前
写一个感染型病毒
开发语言·安全·安全性测试
wheelmouse778816 小时前
一个优雅、通用、零侵入的 CSV 导出工具类(Java 实战)
java·开发语言
cike_y16 小时前
JavaWeb-Request应用与Cookie&[特殊字符]️Session
java·开发语言·安全·java安全
胡萝卜3.017 小时前
深入C++可调用对象:从function包装到bind参数适配的技术实现
开发语言·c++·人工智能·机器学习·bind·function·包装器
小a杰.17 小时前
Flutter 设计系统构建指南
开发语言·javascript·ecmascript