QDial 设置范围从 0.00 到 10.00 到小部件显示
QDial set range from 0.00 to 10.00 to widget displays
我有一个 class 连接液晶显示屏和刻度盘,当你旋转刻度盘时,你会在液晶显示屏上得到这样的值
#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
鉴于无法使用 double
指定 QDial
范围,您应该提供一个额外的插槽来捕获 valueChanged
信号,在那里编辑值并传递编辑后的值display
lcd
的方法。
因此,在您的小部件中 class:
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 范围内的数字。
我有一个 class 连接液晶显示屏和刻度盘,当你旋转刻度盘时,你会在液晶显示屏上得到这样的值
#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
鉴于无法使用 double
指定 QDial
范围,您应该提供一个额外的插槽来捕获 valueChanged
信号,在那里编辑值并传递编辑后的值display
lcd
的方法。
因此,在您的小部件中 class:
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 范围内的数字。