как реализовать события mouseEnter и mouseLeave в QWidget?

как реализовать события mouseEnter и mouseLeave в QWidget?

если mouseEnter в QWidget, тогда мне нужно установить цвет фона на серый, если mouseLeave из QWidget, то мне нужно установить белый цвет фона

Я пробовал

void enterEvent(QEvent *);
void leaveEvent(QEvent *);

внутри события входа и выхода, я использую bool varibale set true и false. и я вызываю событие QPainter update ();

, приведенный ниже код:

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();
}

Я получаю следующую ошибку при перемещении мыши в QWidget

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

Пожалуйста, помогите мне исправить это. если у кого-то есть образец кода, пожалуйста, предоставьте мне ....

6
задан saravanan 2 December 2010 в 08:40
поделиться