提问: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); }
浙公网安备 33010602011771号