8000 Qt事件过滤器(eventFilter) · Issue #43 · holdyounger/ScopeBlog · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Qt事件过滤器(eventFilter) #43
Open
@holdyounger

Description

@holdyounger

Qt事件过滤器(eventFilter)

[toc]

事件过滤器

void QObject::installEventFilter(QObject *filterObj)
bool eventFilter(QObject *obj, QEvent *event);

Qt的事件过滤由以上两个方法实现,首先安装一个事件过滤器,然后重写 bool eventFilter(QObject *obj, QEvent *event)

filterObj表示事件筛选器对象,它接收发送到此QObject对象的所有事件。筛选器可以停止事件,也可以将事件转发给此QObject对象。事件过滤器filterObj通过它的eventFilter()函数接收事件。

简单实现

> 当鼠标进入 lineEdit 的时候并且操作时 HoverEnter 的时候,则修改 QLabel 的颜色。

  1. 安装事件过滤器
    ui->lineEdit->installEventFilter(this);
  1. 重写 eventFilter()
bool Widget::eventFilter(QObject *wcg, QEvent *event)
{
    if (wcg == ui->lineEdit)
    {
        if(event->type() == QEvent::HoverEnter)
        {
            ui->label_2->setText(QString("进入"));
            ui->label_2->setStyleSheet("QLabel{color:red;}");
            qDebug() << "进入" << endl;
        }
        else if(event->type() == QEvent::HoverLeave)
        {
            ui->label_2->setText(QString("离开"));
            ui->label_2->setStyleSheet("QLabel{color:green;}");
            qDebug() << "离开" << endl;
        }
    }

    return QWidget::eventFilter(wcg,event);
}

blog link [Qt事件过滤器(eventFilter)](https://holdyounger.github.io/Code/Qt/Qt 过滤器/)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0