Wie implementiert man das mouseEnter und mouseLeave Ereignis in QWidget?
wenn die mouseEnter auf die QWidget dann muss ich die Hintergrundfarbe in Grau zu setzen, wenn die Maus das QWidget verlässt, muss ich die Hintergrundfarbe auf Weiß setzen
Ich habe versucht
void enterEvent(QEvent *);
void leaveEvent(QEvent *);
im Inneren des enter&leave Ereignisses benutze ich bool varibale set true & false. und ich rufe das QPainter Ereignis update() auf;
den nachstehenden Code:
void Test::enterEvent(QEvent *)
{
_mouseMove=true;
update();
}
void Test::leaveEvent(QEvent *)
{
_mouseMove=false;
update();
}
void Test::paintEvent(QPaintEvent *)
{
QPainter painter;
painter.begin(&m_targetImage);
painter.setRenderHint(QPainter::Antialiasing);
if(_mouseMove){
painter.fillRect(QRect(0,0,width(),height()),Qt::white);}
else{
painter.fillRect(QRect(0,0,width(),height()),Qt::gray);}
painter.end();
QPainter p;
p.begin(this);
p.drawImage(0, 0, m_targetImage);
p.end();
}
Ich erhalte folgenden Fehler, wenn ich die Maus im QWidget bewege
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::end: Painter not active, aborted
Bitte helfen Sie mir, dies zu beheben. wenn jemand mit Beispielcode bitte bieten mir....