qt eventFileter事件过滤器

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    static int num=0;
    ui->setupUi(this);
    tm = new QTimer(this);
    tm->start(500);
    connect(tm,&QTimer::timeout,[=](){
        ui->label_2->setText(QString::number(num++));
    });

    // 给ui->label做事件过滤器拦截
    // 给控件安装过滤器
    ui->label->installEventFilter(this);
    // 重写过滤器事件
}
bool Widget::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->label){
        if(event->type() == QEvent::MouseButtonPress){
            QMouseEvent* ev = static_cast<QMouseEvent*>(event);
            QString str = QString("鼠标摁下 x = %1 y = %2").arg(ev->x()).arg(ev->y());
            qDebug()<<"鼠标摁下"<<str;
            return true;
        }
    }
    // 其他让父类处理
    return QWidget::eventFilter(watched,event);
}
上一篇:关于Flutter文本组件Widget的全面解读,吊打面试官系列!


下一篇:无标题