QMl QtControls.Slider возвращает значение с десятичными точками - PullRequest
1 голос
/ 04 августа 2020

Я использую ползунок со следующими свойствами, установленными для него -

Item {
    id: root
    signal sliderMoved
    property alias value: control.value
    
    QtControls.Slider {
        orientation: Qt.Vertical
        snapMode: QtControls.Slider.SnapOnRelease
        from: 59.0
        to: 86.0
        stepSize : 1.0
        onMoved: root.sliderMoved()
    }
}

От пользователя QML, где этот ползунок используется через загрузчик

Connections {
    target: sliderLoader.item
    onSliderMoved: {
        console.warn(sliderLoader.item.value);
    }
}

Но каждый раз, когда ползунок перетаскивается , он возвращает значение с десятичными точками. Я ожидаю значения вроде 59,60,61, 62 ..... до 86, а не 59,12, 63,45 и т. Д. c. Как избавиться от этих десятичных знаков в возвращаемом значении ползунка при перемещении ползунка

1 Ответ

0 голосов
/ 06 августа 2020

Причина, по которой вы видите десятичные дроби, заключается в том, что для вашего слайдера snapMode установлено значение snapOnRelease. Это означает, что значение ползунка не будет учитывать ваш размер шага, пока пользователь не отпустит ползунок. Переход на snapAlways исправит это, но приведет к тому, что ползунок будет казаться "неустойчивым" во время использования. Если вы все еще хотите использовать snapOnRelease; Я вижу два варианта продвижения вперед.

Вместо использования onMoved для создания sliderMoved вы можете использовать.

onPressedChanged: {
    if (!pressed) {
      root.sliderMoved()
    }
  }

Таким образом, сигнал будет выдан только после того, как ползунок будет отпущен / зафиксирован, и вы записать целое числовое значение, выбранное пользователем.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...