Как я могу отключить испускаемое значение QSlider SIGNAL на стрелках клавиатуры и прокрутке mouseWheel. Установив
ui->horizontalSlider->setFocusPolicy(Qt::NoFocus);
Клавиатуры Стрелки Клавиши не излучают сигналы.
Как я могу сделать то же самое для прокрутки колесика мыши?
Я не хочу переопределять свой собственный класс Slider из QSlider.
Прошу любой работы вокруг или API, так что я могу отключить прокрутку клавиатуры и колеса мыши в ответ на qslider.
Основное намерение состоит в том, чтобы избежать отправки сигналов по каждому значению. Итак, я реализовал следующее, и он работает нормально
on_horizontalSlider_sliderReleased()
on_horizontalSlider_sliderPressed()
на основе флага bool, обновленного в этих 2 слотах,
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, чтобы блокировать испускание сигналов ValueChanged от QSlider при вращении колеса. Но если вам нужно какое-то особое поведение — вам нужно контролировать дополнительные опции в вашем EventFilter. EventFilter может управлять многими поведением объекта без его подкласса.
Других решений пока нет …