Различные функциональные возможности в зависимости от перемещения слайдера Qt - PullRequest
0 голосов
/ 29 марта 2020

У меня есть вертикальный ползунок, и я хочу что-то сделать в зависимости от того, как движется ползунок.

a. Если пользователь перемещает ползунок, нажимая «Я хочу что-то сделать, когда он отпущен».

b. Если пользователь перемещает ползунок с помощью прокрутки, я хочу что-то сделать, когда он остановит прокрутку.

c. Если пользователь перемещает ползунок, нажимая клавишу со стрелкой, я хочу что-то делать каждый раз, когда меняется число.

Я не нашел способа охватить все эти функции.

С помощью

void on_verticalSlider_slice_sliderReleased() {
  qDebug() << "on_verticalSlider_slice_sliderReleased";
  qDebug() << this->Internals->verticalSlider_slice->value();
}

захватывает только первый вариант. Ничего с прокруткой или клавишей со стрелкой.

С

void on_verticalSlider_slice_valueChanged(int value){
    qDebug() << "on_verticalSlider_slice_valueChanged";
    qDebug() << value;
}

он захватывает клавиши со стрелками и прокрутку, но он также фиксирует щелчок и отпускание, проходя каждый номер, так же, как при прокрутке.

Как я могу это сделать?

1 Ответ

0 голосов
/ 29 марта 2020

То, чего вы хотите достичь, может быть достигнуто с помощью системы событий Qt: https://doc.qt.io/archives/qt-4.8/eventsandfilters.html

Вот примерный псевдокод:

bool MySlider::event(QEvent *event)
{
    if (event->type() == QEvent::KeyPress) {
      // This is key event
    } else if (event->type() == QEvent::MousePress) {
      // This is mouse press event
    } else if (event->type() == QEvent::Scroll) {
      // This is scroll event
    } else {

    }

    // If you want your slider to change the value based on the event instead of
    // you manually setting your slider's value based on the above events.
    return QSlider::event(event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...