首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDial设置范围从0.00到10.00到小部件显示

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

Stack Overflow用户
提问于 2017-12-10 13:12:39
回答 1查看 2.2K关注 0票数 2

我有一个类,它将液晶显示器与刻度盘连接起来,当你旋转刻度盘时,你会得到液晶显示器上的值,如下所示

代码语言:javascript
复制
#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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-10 14:36:40

考虑到无法使用QDial指定double范围,您应该提供一个额外的插槽来捕获valueChanged信号,编辑那里的值,并将编辑后的值传递给lcddisplay方法。

因此,在小部件类中:

代码语言:javascript
复制
private slots:
  void dialValueChanged(int value);

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

代码语言:javascript
复制
dial->setMinimum(0);
dial->setMaximum(10000);

然后连接新的插槽:

代码语言:javascript
复制
connect(dial, SIGNAL(valueChanged(int)), this , SLOT(dialValueChanged(int)));

插槽定义如下:

代码语言:javascript
复制
void SlideLcd::dialValueChanged(int value)
{
  double v = (double)((double)value / 100);
  lcd->display(v);
}

这样,当拨号值从0更改到10000时,您的液晶显示器就会相应地在0.00到100.00范围内显示数字。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47739201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档