提问:Qt重写的函数有时候有反应,有时候没反应

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::myWidget)
{
    ui->setupUi(this);
    this->resize(640,480);
    //安装过滤器
    ui->label_2->installEventFilter(this);
    ui->label_2->setText(QString("Mouse "));
    ui->label_2->setMouseTracking(true);
}

//事件过滤器
bool myWidget::eventFilter(QObject *obj, QEvent *e)
{
    if(obj == ui->label_2)
    {
        QMouseEvent *env = static_cast<QMouseEvent *>(e);
        if(e->type() == QEvent::MouseMove)
        {
            qDebug()<<"label_2";
            ui->label_2->setText(QString("Mouse move"));
            return true;
        }
    }
    else
    {
        return QWidget::eventFilter(obj,e);
    }

}

 还有就是:进入时不会settext,只有离开的时候才会设置离开的,并且只有鼠标点到标题栏才会改变。其他地方不会改变

//进入窗口区域
void mylabel::enterEvent(QEnterEvent *event)
{
    //qDebug()<<"1";
    QString text = QString("<center><h3>Mouse enterEvent</h3></center>");
    this->setText(text);
    return QWidget::enterEvent(event) ;

}
//离开窗口区域
void mylabel::leaveEvent(QEvent *event)
{
    //qDebug()<<"-1";
    QString text = QString("<center><h3>Mouse leaveEvent</h3></center>");
    //this->setText(text);
    return QWidget::leaveEvent(event);
}

 

posted @ 2024-07-22 16:34  文姬的九命猫  阅读(2)  评论(0编辑  收藏  举报