当前位置: 首页 > news >正文

【Qt开发】输入类控件(六)-> QDial

目录

1 -> 概述

2 -> 核心属性

3 -> 核心信号

4 -> 核心交互特性

5 -> 视觉与风格

6 -> 典型应用场景

7 -> 与QSlider的对比与选择

8 -> 代码示例

8.1 -> 调整窗口透明度

9 -> 总结


1 -> 概述

在构建图形用户界面时,我们常常需要让用户在一个确定的数值范围内进行选择。虽然下拉列表、滑块和数字输入框都能实现这一目标,但Qt提供了一个更具物理世界隐喻和交互感的控件——QDial,即旋钮控件。

QDial的核心设计理念源于我们熟悉的物理旋钮,例如收音机上的音量开关、老式收音机的调频盘或工业设备上的参数调节器。它的存在,不仅仅是为了输入一个数值,更是为了提供一种符合用户心智模型的、直观的旋转操作体验。

与纯粹的线性滑块相比,旋钮在视觉上更紧凑,尤其适合在需要频繁、精细调整,或空间有限的界面布局中使用。它能立刻向用户传达一个信息:“这是一个可以通过旋转来调节的参数。

2 -> 核心属性

属性说明
value持有的数值
minimum最小值
maximum最大值
singleStep按下方向键的时候改变的步长
pageStep按下 pageUp / pageDown 的时候改变的步长
sliderPosition界面上旋钮显示的初始位置
tracking

外观是否会跟踪数值变化

默认为 true,一般不需要修改

wrapping

是否允许循环调整

即数值如果超过最大值,是否允许回到最小值

(调整过程能否 “套圈” )

notchesVisible是否显示刻度线
notchTarget

刻度线之间的相对位置

数字越大,刻度线越稀疏

3 -> 核心信号

属性说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发

4 -> 核心交互特性

QDial的交互方式是其灵魂所在,它提供了几种灵活的操作模式:

  • 鼠标拖动旋转:最直接的方式,用户可以通过按住并拖动旋钮的“指针”或边缘来改变其值。这种模拟物理旋钮的阻尼感和惯性(虽然默认实现简单),带来了直接的操控反馈。

  • 鼠标滚轮调节:当鼠标悬停在QDial上时,通过滚动滚轮可以精确地微调数值,这为需要精细控制的场景提供了便利。

  • 键盘导航控制:对于注重无障碍访问或键盘操作效率的用户,QDial同样支持通过键盘方向键进行步进式的数值调整。

此外,QDial支持循环滚动的选项。当启用时,旋钮的值达到最大值后,继续旋转会跳回到最小值,反之亦然。这非常适合用于调节角度或相位等循环参数。

5 -> 视觉与风格

QDial的外观高度依赖于当前应用程序所使用的Qt风格主题。在不同的操作系统或自定义主题下,它可能呈现为现代的扁平化圆盘,也可能是有立体感的、带有凹槽或刻度的仿真旋钮。

开发者可以自定义其外观的方方面面:

  • 刻度线:可以显示或不显示刻度线,并可以选择主刻度和次刻度的密度,刻度可以绘制在旋钮内部或外部。

  • 数值范围:可以灵活地设置最小值、最大值和当前值,以适应不同的参数需求(如0-100的音量,-180到+180的相位等)。

  • 旋钮外观:虽然默认样式由主题决定,但通过Qt强大的样式表机制,开发者几乎可以完全重新设计QDial的外观,包括其背景、指针、凹槽的颜色、渐变色乃至添加自定义图片,从而创造出与应用程序品牌高度契合的独特设计。

6 -> 典型应用场景

QDial并非万能控件,它在特定场景下能发挥出最大优势:

  1. 音频与视频应用:这是最经典的应用。调节音量、平衡、高低音均衡器,或是视频编辑软件中的色彩饱和度、亮度等。旋转操作非常符合用户对这类参数调节的直觉。

  2. 工业控制与仪表盘:在模拟工业控制面板或汽车仪表盘的界面中,QDial能够完美地复现各种物理仪表和调节开关,增强界面的真实感和专业性。

  3. 数据可视化与参数调整:在3D建模、图像处理或科学计算软件中,用于实时调整观察角度、滤镜强度、算法参数等。用户可以一边旋转旋钮,一边观察画布或数据图的实时变化,交互体验非常流畅。

  4. 紧凑空间内的输入:当界面布局非常拥挤,无法容纳一个水平的滑块时,圆形的QDial可以节省宝贵的垂直或水平空间。

7 -> 与QSlider的对比与选择

在选择使用QDial还是其兄弟控件QSlider时,开发者需要考虑以下几点:

  • 精度与范围:对于非常大的数值范围,线性滑块通常能提供更精确的定位。而旋钮在极端值附近操作时(例如从359度调到0度)可能会因为循环特性而产生困惑。

  • 空间与布局:滑块需要一条直线空间,而旋钮需要一个方形空间。根据界面整体布局,其中一种可能更合适。

  • 用户习惯与隐喻:如果调节的参数在用户心智中本身就是一个“旋钮”(如音量),那么QDial是更自然的选择。如果是一个线性进度或位置,则滑块更佳。

8 -> 代码示例

8.1 -> 调整窗口透明度

1. 在界面上创建一个旋钮

2. 对旋钮初始化

3. 编写 widget.cpp,设置旋钮的 valueChanged slot 函数

#include "widget.h"
#include "ui_widget.h"#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_dial_valueChanged(int value)
{qDebug() << value;this->setWindowOpacity((double)value / 100);
}

4. 运行程序,观察效果,可以看到随着拖动旋钮旋转,不透明度发生明显变化

9 -> 总结

QDial 是 Qt 控件库中一个极具特色的成员。它超越了简单的数值输入功能,通过模拟物理世界的交互方式,为应用程序注入了更直观、更富触感的用户体验。尽管在绝对精度和大范围调整上可能略逊于滑块,但它在紧凑性、特定领域的隐喻契合度以及视觉表现力方面拥有无可替代的优势。合理地运用 QDial,能够显著提升那些需要频繁、直观参数调节的应用的交互品质与专业感。


感谢各位大佬支持!!!

互三啦!!!

http://www.dtcms.com/a/464845.html

相关文章:

  • 在JavaScript / HTML中,Chrome报错此服务器无法证实它就是xxxxx - 它的安全证书没有指定主题备用名称
  • 如何建一个免费的网站流量对网站排名的影响因素
  • PawSQL宣布支持DB2数据库SQL审核和性能优化
  • 在JavaScript / HTML中,div容器在内容过多时不显示超出的部分
  • webrtc弱网-RobustThroughputEstimator源码分析与算法原理
  • WPF依赖属性
  • 数据可视化 ECharts
  • javascript 性能优化实例一则
  • mapbox基础,使用矢量切片服务(pbf)加载line线图层
  • LLVM(Low Level Virtual Machine)介绍
  • Docker 一键部署指南:GitLab、Nacos、Redis、MySQL 与 MinIO 全解析
  • HDLBit 个人记录
  • 基于Jetson+FPGA+GMSL+AI的自动驾驶数据采集解决方案
  • 0006.C#学习笔记3-- HTML和CSS
  • 基于X86+FPGA+GPU的自动驾驶数据回灌测试解决方案
  • 在JavaScript / HTML中,Chrome报错Refused to execute inline script
  • 自动驾驶的“虚拟驾校”如何炼成?
  • 自动驾驶传感器数据录制过程中的五大系统性挑战
  • 学校网站建设开题报告书wordpress 发布说说
  • 企业如何减少由于数据不一致带来的运营成本?
  • 安卓开发APP应用程序和苹果iOS开发APP应用程序有什么区别?
  • Mac 上用 Homebrew 安装 JDK 8(适配 zsh 终端)完整教程
  • 利用小偷程序做网站企业网站开发建设
  • K8S基本命令操作
  • 【kubernetes/k8s源码分析】kube-controller-manager之node controller源码分析
  • SMOTE 算法详解:解决不平衡数据问题的有效工具
  • HGDB集群(安全版)repmgr手动切换主备库
  • 三维GIS数据转换指南:SHAPE文件到3DTiles的高效实现方案
  • K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战
  • 宁波外贸网站制作公司手机网站建设哪家公司好