Qt中QListWidget取消选择事件

拜拜、爱过 提交于 2020-03-05 15:11:11

1.出现的问题

在使用QListWidget的时候,有这样的业务逻辑。用户切换节点后,需要判断一些条件决定是否真正跳转至下个节点,那么怎么拦截这个事件就是本次文档的主要内容。

2.解决办法

使用eventfilter,在QListWidget的上级控件中,安装事件监听器。

ui->listWidget->viewport()->installEventFilter(this); 注意是listWidget->viewport(),而不是listWidget

在上级控件中继承eventfiler方法拦截事件信息,如下代码

bool XXXXX::eventFilter(QObject* watched, QEvent* event)
{
    if (watched == ui->listWidget->viewport())
    {
        qDebug() << event->type();
        if (event->type() == QEvent::MouseButtonPress && m_bIsChanged)
        {
            MessageDialog::dialogShow(MessageDialog::Check, tr("Warning"), tr("Please save the current group first"));
            event->ignore();
            return true;
        }
    }
    return QWidget::eventFilter(watched, event);
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!