QDial设置范围从0.00到10.00到小部件显示

时间:2017-12-10 13:12:40

标签: c++ qt qdial

我有一个连接Lcd显示器和表盘的课程,当你旋转表盘时,你会得到像这样的液晶显示器上的值

#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 个答案:

答案 0 :(得分:2)

鉴于无法使用QDial指定double范围,您应该提供一个额外的插槽来捕获valueChanged信号,在那里编辑值并传递编辑了display的{​​{1}}方法的值。

所以,在你的widget类中:

lcd

在构造函数中将拨号范围设置为0-10000:

private slots:
  void dialValueChanged(int value);

然后连接新插槽:

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

插槽定义如下:

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

这样,当拨号值从0变为10000时,你的lcd将显示0.00到100.00范围内的数字。