I want to show a outer enclosing rectangle border for QWidget while the mouse moves In (enterEvent()) but disappeared when mouse moves out (leaveEvent()).
I have tried to subClass a QWidget and override the paintEvent();
void QImageLabel::enterEvent(QEvent * event)
{
QLabel::enterEvent(event);
m_bDrawBorder =true;
update();
}
void QImageLabel::leaveEvent(QEvent * event)
{
QLabel::leaveEvent(event);
m_bDrawBorder = false;
update();
}
void QImageLabel::paintEvent(QPaintEvent *aPaintEvent)
{
if(m_bDrawBorder)
{
QPainter painterParent(parentWidget() ? parentWidget() : QApplication::desktop());
QRect rectc = geometry();
rectc.adjust(-2,-2,2,2);
QPen pen(Qt::darkCyan);
pen.setWidth(2);
painterParent.setPen(pen);
painterParent.drawRect(rectc);
}
QLabel::paintEvent(aPaintEvent);
}
But nothing appeared? (BTW,I can use this method to draw a internal rectangle border)
Do I must to achieve in the parent level? (e.g by install eventFilter() for that child or override the mouseMove() and detect if the cursor is above that child?)
if so, Is possible to achieve it inside the child widget?
any hint?
thanks!