提问: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); }