Отключить значение QSliderChanged на клавишах со стрелками на клавиатуре

Как я могу отключить испускаемое значение QSlider SIGNAL на стрелках клавиатуры и прокрутке mouseWheel. Установив

    ui->horizontalSlider->setFocusPolicy(Qt::NoFocus);

Клавиатуры Стрелки Клавиши не излучают сигналы.

Как я могу сделать то же самое для прокрутки колесика мыши?
Я не хочу переопределять свой собственный класс Slider из QSlider.
Прошу любой работы вокруг или API, так что я могу отключить прокрутку клавиатуры и колеса мыши в ответ на qslider.

Основное намерение состоит в том, чтобы избежать отправки сигналов по каждому значению. Итак, я реализовал следующее, и он работает нормально

on_horizontalSlider_sliderReleased()
on_horizontalSlider_sliderPressed()

на основе флага bool, обновленного в этих 2 слотах,

on_horizontalSlider_valueChanged(int)

выполняет требуемую операцию … как после отпускания ползунка, значение добавляется в требуемом приложении.

Просьба предоставить подходы, примеры для обхода.

0

Решение

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 может управлять многими поведением объекта без его подкласса.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]