Я использую в своем приложении в основном двойные ползунки, и я подключаю каждый из них к ползунку, чтобы c синхронизировать их значения.
Метод, который я использую, работает отлично, за исключением случаев, когда значение счетчика достигает 0.28
, 0.56
и 1.12
. При использовании колеса прокрутки для изменения ползунка и счетчика или кнопок счетчика оно застревает на одном или всех этих значениях и больше не продвигается.
Я сделал образец приложения только с одним ползунком и двойным счетчиком, которые демонстрируют такое же поведение.
главное окно. cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->horizontalSlider, &QSlider::valueChanged, [=]() {emit changeSpinBoxValWithSliderVal(ui->horizontalSlider->value(), 0.01, "doubleSpinBox");});
connect(ui->doubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), [=](double) {emit changeSliderValWithSpinBoxVal(ui->doubleSpinBox->value(), 100, "horizontalSlider");});
}
void MainWindow::changeSpinBoxValWithSliderVal(int sliderValue, double stepSize, QString spinBoxName)
{
MainWindow::findChild<QDoubleSpinBox*>(spinBoxName)->setValue(double(sliderValue*stepSize));
}
void MainWindow::changeSliderValWithSpinBoxVal(double spinBoxValue, int multiplier, QString sliderName)
{
MainWindow::findChild<QSlider*>(sliderName)->setValue(int(spinBoxValue*multiplier));
}
MainWindow::~MainWindow()
{
delete ui;
}
QSlider range : 0-200
Размер шага QSlider: 1
Диапазон QDoubleSpinbox: 0,00-2,00
Размер шага QDoubleSpinbox: 0,01