在 Qt 工业软件开发中,有一类界面需求几乎都会遇到:
设置一个参数范围。
比如:
温度报警上下限 压力安全区间 转速限制范围 良率筛选条件 检测参数范围 数据查询区间
很多项目最后都会变成:
两个输入框。
或者两个 QSlider。
一个设置最小值,一个设置最大值。
功能没问题,但体验和维护都会出现问题。
两个控件无法直观看出当前范围。
上下限关系需要额外判断。
大量校验代码散落在业务页面中。
于是一个简单的范围选择,慢慢变成了重复开发。
RangeSlider:专为范围选择设计的 Qt 控件
这次整理了一个通用控件:
RangeSlider 双端范围滑块。
它可以在同一条滑轨上,同时选择:
最小值 最大值
左侧手柄控制下限。
右侧手柄控制上限。
中间高亮区域就是当前选择范围。
例如:
45 ℃ ================= 78 ℃
用户拖动时,可以直接看到当前区间变化。

不需要理解两个控件之间的关系。
为什么工业软件更适合使用 RangeSlider?
相比两个普通 QSlider,RangeSlider 将范围逻辑进行了统一封装。
内部处理:
最小值 最大值 当前下限 当前上限 拖动限制 步长控制 单位显示
业务层只需要获取:
int lower = slider->lowerValue();
int upper = slider->upperValue();
然后根据项目需求:
更新设备参数 保存配置 刷新查询条件 修改报警阈值
即可。
集成非常简单
源码已经整理成独立 Qt Demo。
只需要加入:
RangeSlider.h
RangeSlider.cpp
创建控件:
auto *slider = new RangeSlider;
slider->setRange(20, 90);
slider->setValues(45, 78);
slider->setStep(1);
slider->setSuffix(QStringLiteral(" ℃"));
监听变化:
slider->setOnRangeChanged(
[](int lower, int upper)
{
qDebug() << lower << upper;
});
无需修改原有业务结构。
控件内部已经处理这些细节
RangeSlider 基于 Qt 自绘 QWidget 实现。
包含:
双端手柄拖动 下限不能超过上限 上限不能低于下限 范围区域高亮 当前值显示 边界值提示
同时针对实际使用场景做了优化:
当两个值距离过近时,自动处理文字重叠问题。
避免出现:
48 50
两个提示挤在一起的情况。
适用场景
RangeSlider 不绑定具体业务。
只要你的界面需要:
“选择一个最小值和最大值”
都可以直接复用。
例如:
工业设备参数设置 PLC 配置工具 测试平台 质量检测系统 数据分析软件 内部调试工具
温度、压力、速度、比例、数量等范围参数,都可以直接接入。
开源源码
源码、Demo 工程、README 已经整理完成。
包含:
RangeSlider.h RangeSlider.cpp Qt 示例工程 使用说明
适用于 Qt Widgets 项目,可直接复制集成。
需要源码:
点赞并转发本文,评论区回复「源码」。
一个 RangeSlider,解决 Qt 工业软件中大量上下限配置场景。
夜雨聆风