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

QT6中Dial、Key Sequence Edit、LCD Number 功能及用法详解

一.QDial (刻度盘/旋钮)

1.功能与特点

QDial 提供了一个圆形范围的输入控件,类似于现实世界中的旋钮、刻度盘或电位器。它继承自 QAbstractSlider,因此具有滑块的核心功能(如范围、当前值、步长),但以旋转的方式进行交互。

数值输入:允许用户在一个圆形范围内通过旋转选择一个数值。

视觉反馈:可以显示刻度线 (setNotchesVisible),让用户对当前值有一个直观的感知。

可循环:可以设置为循环模式 (setWrapping),就像汽车速度表一样,旋转超过最大值后会回到最小值。

信号:主要发出 valueChanged(int) 信号,当值改变时触发。

2.应用场景

QDial 适用于那些需要模拟物理旋钮或进行粗略、快速调整的场景,其精确度要求通常低于直接的数字输入(如QSpinBox)。

媒体播放器 / 音频处理软件:

音量控制:调节主音量、声道平衡。

效果器参数:调整低音、高音、混响、延迟等效果的强度。旋钮是音频软件界面的标准控件。

工业控制 / 仪器仪表仿真:

模拟物理设备上的控制旋钮,如收音机调频、示波器参数调整、老式电台设备等。

控制机械臂的移动速度、角度等。

游戏设置:

调整游戏中的灵敏度、视野(FOV)、亮度、对比度等需要平滑过渡的参数。

图像/视频编辑软件:

调整图片的色相、饱和度、亮度、对比度等。

3.何时选择 QDial 而非 QSlider?

当界面设计需要节省垂直或水平空间时(圆形更紧凑)。

当需要强烈的视觉隐喻,暗示其功能类似于一个物理旋钮时。

当进行粗略、快速的调整比精确输入更重要时。

4.代码示例

    创建 QDial 对象,并设置范围、初始值等属性:cite[1]

    QDial *dial = new QDial(this);

    dial->setFixedSize(100, 100);  // 宽200,高200

    dial->setRange(0, 100); // 设置范围

    dial->setValue(50); // 设置初始值

    dial->setNotchesVisible(true); // 显示刻度

    // dial->setNotchTarget(3.7); // (可选)设置凹槽间的目标像素数,默认约为3.7

    // dial->setWrapping(true); // (可选)启用循环,允许超过360度旋转

    dial->setGeometry(50, 100, 100, 20);

    // 创建一个标签用于显示当前值

    QLabel *valueLabel = new QLabel("当前值: 50", this);

    valueLabel->setAlignment(Qt::AlignLeft);

    valueLabel->setGeometry(70, 203, 100, 20);

    // 连接信号槽:当刻度盘值改变时更新标签显示

    QObject::connect(dial, &QDial::valueChanged, [=](int value) {

        valueLabel->setText(QString("当前值: %1").arg(value));

        // 可根据需要在此添加其他值变化后的操作

    });

二.QKeySequenceEdit (键序列编辑框)

1.功能与特点

QKeySequenceEdit 是一个专门用于输入和捕获键盘快捷键的控件。用户只需在控件获得焦点时按下所需的按键组合,控件就会自动将其记录并显示为标准的快捷键格式(如 "Ctrl+S")。

快捷键捕获:自动捕获按键组合,无需用户手动输入 "Ctrl+Shift+P" 这样的文本。

验证与格式化:自动验证输入的有效性,并将按键组合格式化为本地化的标准字符串(如 macOS 上显示 "?S")。

获取键序列:通过 keySequence() 方法获取输入的 QKeySequence 对象,可直接用于设置操作的快捷键。

信号:keySequenceChanged(const QKeySequence &) 当快捷键改变时发出。

2.应用场景

QKeySequenceEdit 的应用场景非常专一,几乎只用于一类功能:

软件的“偏好设置”或“选项”对话框:

自定义快捷键:允许用户为各种功能(如保存、复制、粘贴、运行命令)设置自己习惯的快捷键。

这是它最核心、最常见的用途。

游戏控制设置:

允许玩家自定义游戏中的操作按键,如移动、攻击、使用技能等。

需要动态配置热键的应用程序:

例如屏幕录制软件(设置开始/停止录制快捷键)、自动化脚本工具(设置触发脚本的热键)。

3.核心价值

它为用户提供了一种极其方便、不易出错的方式来设置快捷键,远比让用户在一个普通的文本框中手动输入键位组合要友好和可靠。

4.代码示例

    创建一个标签,用于显示信息和快捷键

    QLabel *infoLabel = new QLabel("请输入新的快捷键序列(如 Ctrl+S)", this);

    infoLabel->setWordWrap(true); // 允许标签文本换行

    infoLabel->setAlignment(Qt::AlignCenter);

    infoLabel->setGeometry(250, 100, 200, 20);

    // 创建 KeySequenceEdit 控件

    QKeySequenceEdit *keySeqEdit = new QKeySequenceEdit(this);

    // (可选)设置默认键序列,例如 Ctrl+S

    // keySeqEdit->setKeySequence(QKeySequence(Qt::CTRL | Qt::Key_S));

    keySeqEdit->setGeometry(250, 130, 100, 20);

    // 创建一个标签,用于显示当前设置的快捷键

    QLabel *currentShortcutLabel = new QLabel("当前快捷键: None", this);

    currentShortcutLabel->setAlignment(Qt::AlignLeft);

    currentShortcutLabel->setGeometry(250, 160, 200, 20);

    // 连接信号槽:当键序列发生更改时发出的信号

    QObject::connect(keySeqEdit, &QKeySequenceEdit::keySequenceChanged, [=](const QKeySequence &keySequence) {

        if (!keySequence.isEmpty()) {

            currentShortcutLabel->setText("当前快捷键: " + keySequence.toString(QKeySequence::NativeText));

            // 此处通常会将此快捷键绑定到某个QAction的shortcut上

            // 例如:anAction->setShortcut(keySequence);

        } else {

            currentShortcutLabel->setText("当前快捷键: None");

        }

    });

    // (可选)连接编辑结束信号

    // QObject::connect(keySeqEdit, &QKeySequenceEdit::editingFinished, [=]() { ... });

    

三.QLCDNumber (LCD数字显示)

1.功能与特点

QLCDNumber 控件模拟了液晶数码管(LCD)的显示效果,用于显示数字或少量字母。它提供了一种独特的、具有科技感的视觉风格。

数字显示:主要用于显示整数或浮点数。

显示模式:支持多种进制显示:十进制(Dec)、十六进制(Hex)、八进制(Oct)、二进制(Bin)。

外观样式:提供几种显示样式来模拟不同风格的LCD:

Outline: 轮廓线

Filled: 填充(默认)

Flat: 扁平

位数控制:可以通过 setDigitCount() 预设显示的数字位数。不足位时会前补零,超过位数时会触发 overflow() 信号或显示错误。

小数字点:支持显示小数点。

2.应用场景

QLCDNumber 适用于需要突出显示数字、营造特定风格(复古、科技、工业) 或模拟数字设备的场景。

仪器仪表面板:

模拟数字电压表、万用表、频率计数器、汽车仪表盘等的显示。

计时器/秒表:

显示经过的时间、倒计时等。其高对比度的数字易于快速读取。

计算器:

作为计算器的结果显示屏,完美复现经典计算器的外观。

硬件监控程序:

显示CPU使用率、内存占用、网络速度、温度等实时变化的数值数据。

游戏界面:

显示分数、生命值、金币数量等,营造复古街机游戏的风格。

3.何时选择 QLCDNumber 而非 QLabel?

当你需要的不是普通的文本标签,而是一种具有特定风格的数字显示器时。

当你需要营造复古、科技感或工业风的界面外观时。

当你需要简单显示不同进制的数字时。

4.代码示例

    创建 QLCDNumber 对象

    QLCDNumber *lcdNumber = new QLCDNumber(this);

    lcdNumber->setFixedSize(80, 40);  // 宽,高

    lcdNumber->setDigitCount(5); // 设置显示数字的位数

    lcdNumber->setSegmentStyle(QLCDNumber::Flat); // 设置显示样式: Outline(轮廓), Filled(填充-默认), Flat(平面)

    lcdNumber->display(0); // 初始显示为0

    lcdNumber->setMode(QLCDNumber::Dec);  // 十进制

    //lcdNumber->setMode(QLCDNumber::Hex);  // 十六进制

    // lcdNumber->setMode(QLCDNumber::Oct);  // 八进制

    // lcdNumber->setMode(QLCDNumber::Bin);  // 二进制

    lcdNumber->setGeometry(250, 300, 150, 40);

    // 创建一个滑块(QSlider)来控制LCD显示的数字

    QSlider *slider = new QSlider(Qt::Horizontal, this);

    slider->setRange(0, 1000); // 设置滑块范围

    slider->setValue(0);

    slider->setGeometry(250, 360, 150, 20);

    // 连接信号槽:当滑块的值改变时,更新LCD显示的数字

    QObject::connect(slider, &QSlider::valueChanged,

                     lcdNumber, static_cast<void (QLCDNumber::*)(int)>(&QLCDNumber::display));

    // 连接信号槽:当滑块的值改变时,更新LCD显示的数字  //也可以

// connect(slider, SIGNAL(valueChanged(int)), lcdNumber, SLOT(display(int)));

四.代码界面

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

相关文章:

  • 为什么要创建网站公司网站建设管理
  • Tomcat核心架构与生产部署指南
  • 启闭机闸门的网站建设wp做图网站
  • 一个网站项目的价格表wordpress主题Qinmei
  • 虎扑的网站是用什么技术做的江苏免费建站
  • 做网站前景怎样国家企业年审营业执照官网
  • 开封市城乡建设局网站宁德公司做网站
  • mysql网站数据库深圳双区建设
  • 论述网站建设整个流程网站开发完整的解决方案
  • Web渗透之身份认证与访问控制缺陷(越权(水平垂直),访问控制(没有验证),脆弱验证(Cookie,JWT,Session等))
  • CoRL-2025 | SocialNav-SUB:用于社交机器人导航场景理解的视觉语言模型基准测试
  • 做优化网站是什么意思设计网络品牌营销方案思路
  • 单网页网站网站 制作公司
  • c++20|第k大-快速选择|nth_element
  • 小杰深度学习(sixteen)——视觉-经典神经网络——MobileNetV2
  • asp.net企业网站设计广州一建筑外墙脚手架坍塌
  • 自动化测试脚本环境搭建
  • VSCode通过SSH连接到Ubuntu虚拟机失败“找不到ssh安装”问题解决
  • 古镇营销型网站建设代做淘宝客网站
  • 网站开发设计学做婴儿衣服网站好
  • 苏州市工业园区规划建设局网站俄语网站
  • 8网站建设做网站百度建设网站的目的
  • 爱用建站 小程序合肥网站seo服务
  • 鸿蒙List组件通过拖拽改变排序
  • 【橘子ES】如何本地调试ES源码
  • Leetcodde 3713. Longest Balanced Substring I
  • 福州网站制作费用学seo优化
  • # 超简单四步完成FreeRTOS移植到STM32
  • 专业做电子的外贸网站嘉兴做网站美工的工作
  • 山东青岛网站设计网站制定公司