最近,我想要那个QPushButton
当鼠标指针进入时可以发出信号。我怎样才能做到呢?
我知道 QPushButton 有一些已经定义的信号,例如clicked()
, pressed()
, destory()
等等。但没有像悬停(),输入(),...这样的信号
我查了一些相关资料:有人说可以通过css来完成。我不明白。你能给我一些建议吗?谢谢你!
虽然@Exa已经回答了这个问题,但我想展示另一个解决方案,它不需要子类化QPushButton并且使用灵活! (这就是我的项目中需要的)
步骤 1/2:重写 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);
}
}
步骤 2/2:在目标小部件上安装 eventFilter。
LoginWindow::LoginWindow()
{
...
targetPushButton->installEventFilter(this);
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)