Aunque @Exa ha respondido esta pregunta, quiero mostrar otra solución que no necesita subclasificar QPushButton y es flexible en su uso. (Eso es lo que necesito en mi proyecto)
Paso 1/2: reemplazando eventFilter.
LoginWindow.h:
// LoginWindow is where you placed your QPushButton
//(= most probably your application windows)
class LoginWindow: public QWidget
{
public:
bool eventFilter(QObject *obj, QEvent *event);
..
};
LoginWindow.cpp:
bool LoginWindow::eventFilter(QObject *obj, QEvent *event)
{
// This function repeatedly call for those QObjects
// which have installed eventFilter (Step 2)
if (obj == (QObject*)targetPushButton) {
if (event->type() == QEvent::Enter)
{
// Whatever you want to do when mouse goes over targetPushButton
}
return true;
}else {
// pass the event on to the parent class
return QWidget::eventFilter(obj, event);
}
}
Paso 2/2: Instalación EventFilter de los widgets de destino.
LoginWindow::LoginWindow()
{
...
targetPushButton->installEventFilter(this);
...
}
Si se puede explicar lo que le gustaría hacer cuando esté el ratón, puede no ser necesario para interceptar tal evento. Si, por ejemplo, desea cambiar el aspecto del botón, puede hacerlo con una hoja de estilos. –
Gracias .. Quiero hacer eso: si hay dos componentes, una vez que el puntero del mouse se coloca sobre uno, el otro es invisible ... –
Ok, dado que desea afectar un botón basado en la interacción del mouse con otro botón, de hecho deberá interceptar este evento. –