功能:移入widget显示卡片,并且可以进入卡片不消失(widget与卡片距离离得很近),移出卡片才离开
bool DataShowWidget::eventFilter(QObject *obj, QEvent *event)
{
if (obj == ui->widget && event->type() == QEvent::Enter) {
if (!m_noFollow) {
m_noFollow = new NoFollowWidget(this);
m_noFollow->installEventFilter(this);
// 连接卡片的离开事件
connect(m_noFollow, &NoFollowWidget::leaveNoFollow,
this, &DataShowWidget::onLeaveNoFollow);
}
// 卡片显示在widget的左下方
QPoint pos = ui->widget->mapToGlobal(QPoint(0, 0)) +
QPoint(0, ui->widget->height());
m_noFollow->move(pos.x(), pos.y());
m_noFollow->show();
m_noFollow->adjustSize();
}
if (obj == ui->widget&& event->type() == QEvent::Leave) {
if (!m_noFollow) {
return QWidget::eventFilter(obj, event);
}
if (m_noFollow->geometry().contains(QCursor::pos())) {
return QWidget::eventFilter(obj, event);
}
m_noFollow->hide();
}
return QWidget::eventFilter(obj, event);
}