QtのQPushButtonにJSのホバーみたいなイベントを実装するには?

シグナルでの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例 : ...

2026年1月13日

Qt6のQPushButtonとデータを結びつけるには?

今回は例として、enumの値を代入します。 設定の例 enum class ActionType { Open, Save, Close }; QPushButton* btn = new QPushButton("Open"); // enum → int にして保存 btn->setProperty("action", static_cast<int>(ActionType::Open)); 取得の例 void MainWindow::onButtonClicked() { QPushButton* btn = qobject_cast<QPushButton*>(sender()); if (!btn) return; ActionType action = static_cast<ActionType>(btn->property("action").toInt()); switch (action) { case ActionType::Open: qDebug() << "Open"; break; case ActionType::Save: qDebug() << "Save"; break; case ActionType::Close: qDebug() << "Close"; break; } } シグナルの接続 connect(btn, &QPushButton::clicked, this, &MainWindow::onButtonClicked);

2026年1月13日