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

效果

选中状态

点击空白:

结论

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

相关推荐
骇客野人3 分钟前
自己手搓磁盘清理工具(JAVA版)
java·开发语言
清风徐来QCQ9 分钟前
Java笔试总结一
java·开发语言
lly20240612 分钟前
《jEasyUI 转换 HTML 表格为数据网格》
开发语言
萧曵 丶16 分钟前
LangChain Model IO 提示词模版(Python版)
开发语言·python·langchain
Elastic 中国社区官方博客17 分钟前
Elastic 为什么捐赠其 OpenTelemetry PHP 发行版
大数据·开发语言·elasticsearch·搜索引擎·信息可视化·全文检索·php
10Eugene34 分钟前
C++/Qt自制八股文
java·开发语言·c++
冰暮流星34 分钟前
javascript如何实现删除数组里面的重复元素
开发语言·前端·javascript
free-elcmacom2 小时前
C++ 默认参数详解:用法、规则与避坑指南
开发语言·c++
码云数智-大飞2 小时前
分布式事务解决方案全景指南:2PC、TCC、SAGA 与 Seata 实战
开发语言
娇娇yyyyyy2 小时前
QT编程(10): QLineEdit
开发语言·qt