Qt默认的QSlider和QSpinbox只能实现整数调整,不能实现浮点的变化,因此设计了如下可实现浮点变化的QFloatSlider和QFloatSpinner:

QFloatSlider.h

class QFloatSlider : public QSlider
{Q_OBJECTpublic:QFloatSlider(QWidget* pParent = NULL);void setRange(double Min, double Max);void setMinimum(double Min);double minimum() const;void setMaximum(double Max);double maximum() const;double value() const;public slots:void setValue(int value);void setValue(double Value, bool BlockSignals = false);private slots:signals:void valueChanged(double Value);void rangeChanged(double Min, double Max);private:double    m_Multiplier;
};

QFloatSlider.cpp

QFloatSlider::QFloatSlider(QWidget* pParent /*= NULL*/) :QSlider(pParent),m_Multiplier(10000.0)
{connect(this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));setSingleStep(1);setOrientation(Qt::Horizontal);setFocusPolicy(Qt::NoFocus);
}void QFloatSlider::setValue(int Value)
{emit valueChanged((double)Value / m_Multiplier);
}void QFloatSlider::setValue(double Value, bool BlockSignals)
{QSlider::blockSignals(BlockSignals);QSlider::setValue(Value * m_Multiplier);if (!BlockSignals)emit valueChanged(Value);QSlider::blockSignals(false);
}void QFloatSlider::setRange(double Min, double Max)
{QSlider::setRange(Min * m_Multiplier, Max * m_Multiplier);emit rangeChanged(Min, Max);
}void QFloatSlider::setMinimum(double Min)
{QSlider::setMinimum(Min * m_Multiplier);emit rangeChanged(minimum(), maximum());
}double QFloatSlider::minimum() const
{return QSlider::minimum() / m_Multiplier;
}void QFloatSlider::setMaximum(double Max)
{QSlider::setMaximum(Max * m_Multiplier);emit rangeChanged(minimum(), maximum());
}double QFloatSlider::maximum() const
{return QSlider::maximum() / m_Multiplier;
}double QFloatSlider::value() const
{int Value = QSlider::value();return (double)Value / m_Multiplier;
}

QFloatSpinner.h

class QFloatSpinner : public QDoubleSpinBox
{Q_OBJECTpublic:QFloatSpinner(QWidget* pParent = NULL);;virtual QSize sizeHint() const;void setValue(double Value, bool BlockSignals = false);
};
QSize QFloatSpinner::sizeHint() const
{return QSize(90, 20);
}QFloatSpinner::QFloatSpinner(QWidget* pParent /*= NULL*/) :QDoubleSpinBox(pParent)
{}void QFloatSpinner::setValue(double Value, bool BlockSignals)
{blockSignals(BlockSignals);QDoubleSpinBox::setValue(Value);blockSignals(false);
}

Qt: 实现浮点slider和浮点spinbox相关推荐

  1. java 十六进制浮点_Java十六进制浮点文字

    java 十六进制浮点 我如何遇到十六进制浮点数 我正在Java :: Geci中开发一种新功能,以减少代码重新格式化的可能性. 如果重新格式化,当前版本的代码将覆盖原本相同的代码. 这很烦人,因为按 ...

  2. 编译选项中的硬浮点与软浮点区别

    一.硬浮点与软浮点 1. 硬浮点 编译器将代码直接编译成硬件浮点协处理器(浮点运算单元FPU)能识别的指令,这些指令在执行的时候ARM核直接把它转给协处理器执行.FPU 通常有一套额外的寄存器来完成浮 ...

  3. ARM 浮点运算,软浮点,硬浮点

    很多时候我们要处理的数据,不仅仅是整数和字符串,还有浮点数即小数.在多媒体数据处理方面表现的更多.是不是所有的CPU都支持,浮点运算呢?答案:不是. 我们常常听到赢浮点和软浮点,这些到底说的是什么呢? ...

  4. Python界面编程第十八课:Pyside2 (Qt For Python)Slider拖动条

    先上代码: from PySide2.QtWidgets import QApplication, QWidget,QHBoxLayout, QLabel, QSlider import sys fr ...

  5. 汇编语言-018(FLD 、FST、FSTP、FCHS、FABS 、浮点运算符、浮点比较 )

    1:FLD : FPU(浮点处理器)的加载浮点数到堆栈指令 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD ...

  6. arm-linux-gcc 硬浮点,ARMCC和GCC编译ARM代码的软浮点和硬浮点问题 【转】

    本文介绍了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同.从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-floa ...

  7. matlab实现浮点转定点,浮点转定点方法总结.doc

    浮点转定点方法总结 浮点转定点方法总结 -孔德琦 目录 定点运算方法3 1.1 数 的 定 标3 1.2c语言:从浮点到定点4 1.2.1 加法4 1.2.2乘法6 1.2.3除法7 1.2.4 三角 ...

  8. c语言浮点乘法 溢出,浮点加减乘除运算各在什么情况下会发生溢出?

    满意答案 w9o7w429 2014.01.10 采纳率:52%    等级:12 已帮助:2903人 溢出的原因只有一个 那就是这句 c=a/b 其中b的值为0 也就是 b=cint(request ...

  9. [JavaSE] 数据类型(变量、整形、长整型、双精度浮点、单精度浮点、字符、字节)

    目录 数据类型与运算符 1.0 变量和类型 1.1 整形变量(重点) 1.2 长整型变量 1.3 双精度浮点型变量(重点) 1.4 单精度浮点型变量 1.5 字符类型变量 1.6 字节类型变量

最新文章

  1. 什么是整型?Python整型详细介绍
  2. oracle 字符串转为正数用 to_number()……
  3. spring-JDBC
  4. SQL Server之游标
  5. css常用或不熟悉的
  6. visual stadio.net已检测到web服务器运行的不是asp.net1.1版故障的排除
  7. 流媒体 - UVC 协议
  8. SI 9000 及阻抗匹配学习笔记(一)
  9. mp-mtgsig 美团iOS 签名逆向工程分析
  10. 小型数据集卷积神经网络CNN训练策略
  11. 用简单易懂的话语来快速入门windows缓冲区溢出
  12. 论坛贴吧图片IP签名档源码
  13. 李一男再出发:电动车怎么做?
  14. 电脑出现ntldr is missing无法开机怎么办
  15. C++之定义动态二维数组
  16. 如何在mac版chrome安装第三方插件
  17. 操作系统:磁盘的移臂调度算法
  18. CUDA C/C++ 从入门到入土 第一步——让你的CUDA跑起来
  19. 如何检测时间序列中的异方差(Heteroskedasticity)
  20. javascript教程完整版,JavaScript视频教程

热门文章

  1. spring 组件基于注解的注册方式
  2. cygwin执行.py提示找不到模块,但已经安装模块的解决办法
  3. 在Ubuntu18.04上安装opencv 3.4.1
  4. mybatis中![CDATA[]]的作用
  5. oracle10g索引不生效,oracle 10g分区表索引失效测试
  6. 设计模式---(设计原则)面向对象设计原则
  7. [Quick-x]制作新手引导高亮区域方法之二:裁剪模式
  8. [转载] 七龙珠第一部——第004话 掳人的妖怪——乌龙
  9. Session丢值的问题
  10. Sqlite3支持的数据类型 日期函数 Sqlite3 函数