@Exaはこの質問に答えましたが、QPushButtonをサブクラス化する必要がなく、柔軟に使用できる別のソリューションを示したいと思います。 (それは私のプロジェクトで必要なものです)
ステップ1/2:eventFilterをオーバーライドします。
// 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:
LoginWindow.h:
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);
}
}
ステップ2/2:ターゲット・ウィジェットにeventFilterをインストールします。あなたはマウスをホバリングされたときにやりたいかを説明することができた場合
LoginWindow::LoginWindow()
{
...
targetPushButton->installEventFilter(this);
...
}
、このようなイベントをインターセプトする必要はないかもしれません。たとえば、ボタンの外観を変更したい場合は、スタイルシートでこれを行うことができます。 –
ありがとう..私はそれをしたい:2つのコンポーネントがある場合は、マウスポインタが1つにホバーすると、もう1つは不可視です... –
他のボタンとのマウス操作に基づいてボタンに影響を与えたいので、実際にこのイベントを傍受する必要があります。 –