シグナルでのJSのホバーイベントみたいなやつはなかったようなので、
以下の方法で、JSのmouseenter、mouseoverみたいなやつを実装します。
結論 : サブクラスでオーバーライド
class HoverButton : public QPushButton
{
Q_OBJECT
public:
using QPushButton::QPushButton;
protected:
void enterEvent(QEnterEvent* event) override {
qDebug() << "hover enter";
QPushButton::enterEvent(event);
}
void leaveEvent(QEvent* event) override {
qDebug() << "hover leave";
QPushButton::leaveEvent(event);
}
};
おまけ : シグナル付き
ホバーの実装例 :
class HoverButton : public QPushButton
{
Q_OBJECT
public:
using QPushButton::QPushButton;
protected:
void enterEvent(QEnterEvent* event) override {
emit mouseEnter();
QPushButton::enterEvent(event);
}
void leaveEvent(QEvent* event) override {
emit mouseOver();
QPushButton::leaveEvent(event);
}
signals:
void mouseEnter();
void mouseOver();
};
接続、connect例 :
auto btn = new HoverButton();
connect(btn, &HoverButton::mouseEnter, this, [this](){
//mouse enter
});
connect(btn, &HoverButton::mouseOver, this, [this](){
//mouse over
});