在键盘箭头键上禁用 QSlider 的 valueChanged
Disable QSlider's valueChanged on keyboard arrow keys
如何禁用 QSlider 在键盘箭头和鼠标滚轮滚动时发出的 SIGNAL valueChanged。通过设置
ui->horizontalSlider->setFocusPolicy(Qt::NoFocus);
键盘方向键没有发出信号。
我怎样才能对鼠标滚轮滚动做同样的事情?
我不想从 QSlider 重新实现我的自定义 Slider class。
我要求任何解决方法或 api,以便我可以禁用响应 qslider 的键盘和鼠标滚轮滚动。
主要目的是避免在每次 valueChange 时发送信号。所以我已经实施了以下并且工作正常
on_horizontalSlider_sliderReleased()
on_horizontalSlider_sliderPressed()
基于在这 2 个槽中更新的 bool 标志,
on_horizontalSlider_valueChanged(int)
正在执行所需的操作...例如在释放滑块后,正在将值添加到所需的应用程序中。
请求提供解决方法和示例。
class CBlockWheelEV: public QObject
{
Q_OBJECT
public:
CBlockWheelEV( QObject* parent ): QObject( parent ) {}
bool eventFilter(QObject * pObject, QEvent * pEvent) override
{
if ( pEvent->type() == QEvent::Wheel )
{
qDebug() << pObject << pEvent;
return true; // if return false - Scroll was unlocking
}
return false;
}
};
...
ui->sldTest->installEventFilter( new CBlockWheelEV( ui->sldTest ) );
...
您可以使用EventFilter 来阻止通过滚轮旋转从QSlider 发射信号ValueChanged。但是如果你想要一些特殊的行为——你需要在你的 EventFilter 中控制额外的选项。 EventFilter 可以管理对象的许多行为而无需对其进行子类化。
如何禁用 QSlider 在键盘箭头和鼠标滚轮滚动时发出的 SIGNAL valueChanged。通过设置
ui->horizontalSlider->setFocusPolicy(Qt::NoFocus);
键盘方向键没有发出信号。
我怎样才能对鼠标滚轮滚动做同样的事情? 我不想从 QSlider 重新实现我的自定义 Slider class。 我要求任何解决方法或 api,以便我可以禁用响应 qslider 的键盘和鼠标滚轮滚动。
主要目的是避免在每次 valueChange 时发送信号。所以我已经实施了以下并且工作正常
on_horizontalSlider_sliderReleased()
on_horizontalSlider_sliderPressed()
基于在这 2 个槽中更新的 bool 标志,
on_horizontalSlider_valueChanged(int)
正在执行所需的操作...例如在释放滑块后,正在将值添加到所需的应用程序中。
请求提供解决方法和示例。
class CBlockWheelEV: public QObject
{
Q_OBJECT
public:
CBlockWheelEV( QObject* parent ): QObject( parent ) {}
bool eventFilter(QObject * pObject, QEvent * pEvent) override
{
if ( pEvent->type() == QEvent::Wheel )
{
qDebug() << pObject << pEvent;
return true; // if return false - Scroll was unlocking
}
return false;
}
};
...
ui->sldTest->installEventFilter( new CBlockWheelEV( ui->sldTest ) );
...
您可以使用EventFilter 来阻止通过滚轮旋转从QSlider 发射信号ValueChanged。但是如果你想要一些特殊的行为——你需要在你的 EventFilter 中控制额外的选项。 EventFilter 可以管理对象的许多行为而无需对其进行子类化。