7 Stimmen

Wie implementiert man das mouseEnter und mouseLeave Ereignis in QWidget?

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....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X