原因
有时在开发中,可能会对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);
}
效果
选中状态
:
点击空白
:
结论
用行动祈祷比用言语更能够使上帝了解
。