QDial установить диапазон от 0,00 до 10,00 для отображения виджетов

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

#ifndef SLIDELCD_H
#define SLIDELCD_H

#include <QDial>
#include <QVBoxLayout>
#include <QLCDNumber>
#include "CustomDial.h"class SlideLcd: public QWidget
{
Q_OBJECT
public:
SlideLcd(QWidget *parent=nullptr);
private:
CustomDial *dial;
QLCDNumber *lcd;
QVBoxLayout *layout;
};

SlideLcd::SlideLcd(QWidget *parent)
:QWidget(parent)
{
dial = new CustomDial;
dial->setNotchesVisible(true);
lcd = new QLCDNumber;
connect(dial, SIGNAL(valueChanged(int)), lcd , SLOT(display(int)));
layout = new QVBoxLayout;
layout->addWidget(lcd);
layout->addWidget(dial);
setLayout(layout);
}

Я знаю, что с QDial :: setRange (0,100) вы можете установить диапазон от 0 до 100, но есть ли способ установить диапазоны от 0,00 до 100,00

1

Решение

Учитывая, что нет возможности указать QDial диапазон использования double, вы должны предоставить дополнительный слот, чтобы поймать valueChanged отредактируйте значение и передайте отредактированное значение display метод lcd,

Итак, в вашем классе виджетов:

private slots:
void dialValueChanged(int value);

Установите диапазон набора 0-10000 в конструкторе:

dial->setMinimum(0);
dial->setMaximum(10000);

затем подключите новый слот:

connect(dial, SIGNAL(valueChanged(int)), this , SLOT(dialValueChanged(int)));

Определение слота выглядит так:

void SlideLcd::dialValueChanged(int value)
{
double v = (double)((double)value / 100);
lcd->display(v);
}

Таким образом, когда значение набора изменяется с 0 на 10000, ваш ЖК-дисплей будет отображать числа в диапазоне от 0,00 до 100,00 соответственно.

2

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

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

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