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

效果

选中状态

点击空白:

结论

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

相关推荐
测试界的酸菜鱼2 分钟前
C# NUnit 框架:高效使用指南
开发语言·c#·log4j
GDAL2 分钟前
lua入门教程 :模块和包
开发语言·junit·lua
李老头探索3 分钟前
Java面试之Java中实现多线程有几种方法
java·开发语言·面试
CSXB995 分钟前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具
web Rookie25 分钟前
JS类型检测大全:从零基础到高级应用
开发语言·前端·javascript
很楠不爱36 分钟前
Qt——窗口
开发语言·qt
yi碗汤园36 分钟前
【一文了解】C#基础-集合
开发语言·前端·unity·c#
Cachel wood1 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
დ旧言~1 小时前
【网络】应用层——HTTP协议
开发语言·网络·网络协议·http·php
follycat1 小时前
[极客大挑战 2019]PHP 1
开发语言·学习·网络安全·php