QCheckBoxQRadioBoxQComboBoxQSlider

news2024/11/26 0:47:38

QCheckBox

QCheckBox 是 Qt 框架中一个常用的控件,用于创建一个可以勾选或取消勾选的复选框。它通常用于表示选项的开/关状态

autoExclusive 是一个与单选按钮(QRadioButton)相关的属性。这个属性决定了同一个父窗口下的单选按钮是否自动形成一个互斥的组,即在这个组中,任何时候只能有一个按钮被选中。

源码

测试代码

  • 触发时机

    • clicked:当按钮被点击时触发,不管状态是否改变。
    • toggled:当按钮的选中状态改变时触发。

QButtonGroup

  • 按钮的逻辑分组QButtonGroup 允许你将多个按钮(如 QPushButtonQRadioButtonQCheckBox 等)逻辑上分组在一起。这意味着你可以管理这些按钮的行为,使它们作为一个单元进行交互。

  • 单选与多选

    • 对于 QRadioButton 类型的按钮,QButtonGroup 默认使组内的按钮表现为单选(只能有一个按钮被选中)。
    • 对于 QCheckBox 类型的按钮,QButtonGroup 允许多选(可以选中多个按钮)。
  • 信号QButtonGroup 提供了几个有用的信号,如 buttonClicked(QAbstractButton *),当组内的任何按钮被点击时发出。这样,你可以仅通过监视组的信号,而不是每个单独按钮的信号,来简化事件处理逻辑。

  • 按钮的唯一性:在一个 QButtonGroup 中,每个按钮可以有一个唯一的标识符(通常是一个整数)。这使得你可以通过标识符来引用和区分不同的按钮。

  • 布局无关QButtonGroup 是一个不可视的对象,它不提供任何用户界面或布局功能。它仅用于管理按钮的逻辑和行为。

QRadioBox

  • 基本使用QRadioButton 允许用户从一组选项中选择一个。当一个单选按钮被选中时,同一组内的其他单选按钮(通常是同一个父窗体或 QButtonGroup 中的按钮)会自动被取消选中。

  • 创建和配置

    • 可以通过代码或使用 Qt Designer 来创建 QRadioButton
    • 可以设置按钮的文本、图标、状态(选中/未选中)等。
  • 信号

    • clicked():当用户点击单选按钮时发出。
    • toggled(bool):当单选按钮的选中状态改变时发出,无论是通过用户交互还是程序设置。

QComboBox

QComboBox 是 Qt 框架中的一个控件,用于在下拉列表中显示一组选项。用户可以从列表中选择一个选项,也可以输入一个值(如果 QComboBox 被设置为可编辑的)。QComboBox 非常适用于需要从一组预定义选项中选择一个选项的情况。

源码

常用方法

  • void addItem(const QString &text):添加一个带有指定文本的选项。
  • void addItems(const QStringList &texts):添加一个字符串列表中的多个选项。
  • QString currentText() const:返回当前选定选项的文本。
  • int currentIndex() const:返回当前选定选项的索引。
  • void setEditable(bool editable):设置 QComboBox 是否可编辑。

 

QVariant

Q_DECLARE_METATYPE 是 Qt 框架中的一个宏,用于在 Qt 的元对象系统中声明任何非 Qt 类型。这样声明的类型可以用于 Qt 的信号和槽机制,以及其他需要类型信息的功能,如属性系统、变体类 QVariant 等。

当你想要在 Qt 的信号和槽中使用自定义类型,或者想要将自定义类型存储在 QVariant 中时,就需要使用 Q_DECLARE_METATYPE

QComboBox信号

activated 信号

  • 触发时机:当用户从下拉列表中选择一个选项时,activated 信号被触发。这个信号只有在用户的操作导致选项改变时才会发出,即通过鼠标点击或键盘选择。

  • 常见用途activated 通常用于响应用户的直接交互,如当用户选择了一个新的选项时执行特定的操作。

  • 版本:有两个版本的 activated 信号:

    • void activated(int index):发送选项的索引。
    • void activated(const QString &text):发送选项的文本。

currentIndexChanged 信号

  • 触发时机:无论当前选中的项是通过用户操作还是通过程序代码更改的,currentIndexChanged 信号都会被触发。它更广泛地反映了 QComboBox 选项的任何改变。

  • 常见用途:这个信号常用于更新与 QComboBox 选项相关联的数据或状态,不管这个改变是如何引起的。

  • 版本:同样有两个版本的 currentIndexChanged 信号:

    • void currentIndexChanged(int index):发送选项的索引。
    • void currentIndexChanged(const QString &text):发送选项的文本。

QSlider

常用方法

  • void setMinimum(int):设置滑动条的最小值。
  • void setMaximum(int):设置滑动条的最大值。
  • void setRange(int min, int max):一次性设置滑动条的最小值和最大值。
  • void setValue(int):设置滑动条的当前值。
  • int value() const:获取滑动条的当前值。
  • void setOrientation(Qt::Orientation):设置滑动条的方向(水平或垂直)。

SingleStep

  • 定义singleStep 属性定义了当用户使用箭头键或类似的小幅度调节控件时,控件值改变的步长。
  • 用途:这个属性通常用于精细调节。例如,在 QSlider 中,当用户点击滑块两边的小箭头时,滑块移动的量就是由 singleStep 决定的。
  • 设置方法:使用 setSingleStep(int step) 方法来设置这个值。

PageStep (SinglePage)

  • 定义pageStep(在某些上下文中可能称为 singlePage)属性定义了当用户执行更大幅度的调整时,如点击滑块轨道,控件值改变的步长。
  • 用途:这个属性用于大幅度调节。在 QSlider 控件中,点击滑块轨道(但不是滑块本身)会使滑块移动一个 pageStep 的量。
  • 设置方法:使用 setPageStep(int step) 方法来设置这个值

源码

信号

  • valueChanged(int):当滑块的值改变时发出。
  • sliderMoved(int):当用户拖动滑块时发出。
  • sliderPressed()sliderReleased():当用户按下或释放滑块时发出。

qss样式

QSlider::groove { /*滑动槽*/
border: 1px solid #999999;
height: 28px;
background: rgba(155,155,155,200);
border-radius: 10px;
}

QSlider::handle { /*滑动把手*/
background: rgba(255,0,0,200);
width: 20px;
margin: -10px 0;
border: 1px solid rgba(255,0,0,200);
border-radius: 10px;
}



QSlider重载鼠标事件

QMouseEvent 是 Qt 中一个表示鼠标事件的类。这个类提供了关于鼠标操作的详细信息,比如点击、释放、双击和移动。当用户使用鼠标与基于 Qt 的应用程序交互时,就会产生鼠标事件。

主要特性

  1. 位置信息QMouseEvent 提供了鼠标事件发生时的屏幕坐标和窗口坐标。

  2. 按钮状态:它可以告诉你事件是由哪个鼠标按钮触发的(左键、右键、中键等),以及在事件发生时其他鼠标按钮的状态。

  3. 修饰符键状态QMouseEvent 还可以提供事件发生时修饰符键(如Shift、Ctrl、Alt)的状态。

常用方法

  • button():返回引起事件的按钮。
  • buttons():返回事件发生时被按下的所有鼠标按钮。
  • pos():返回鼠标事件发生的位置。
  • globalPos():返回鼠标事件发生时的全局位置,即屏幕坐标。

事件处理

在 Qt 中,鼠标事件通常在 QWidget 或其子类中处理,通过重写以下方法之一:

  • mousePressEvent(QMouseEvent *event):当鼠标按钮被按下时调用。
  • mouseReleaseEvent(QMouseEvent *event):当鼠标按钮被释放时调用。
  • mouseDoubleClickEvent(QMouseEvent *event):当鼠标按钮被双击时调用。
  • mouseMoveEvent(QMouseEvent *event):当鼠标在组件上移动时调用。

在 Qt 的 QMouseEvent 类中,x() 函数返回鼠标事件发生时的鼠标位置的水平坐标(即 X 坐标)。这个坐标是相对于接收事件的窗口小部件的左上角的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用NPS跟踪客户忠诚度:问卷调查实用指南与技巧分享

许多营销人员表示,净推荐值(NPS)是任何行业成功的主要衡量标准。同时,它也是衡量客户忠诚度的绝佳工具。我们可以将NPS问题引入问卷调查中,从而获取出真实的数据。NPS是怎么衡量顾客的?NPS将顾客分为推荐者…

力扣刷题记录(21)LeetCode:121、123、188、309

目录 121. 买卖股票的最佳时机 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 309. 买卖股票的最佳时机含冷冻期 如果某一天出售股票可以得到最大利润,那么股票买入的价格一定是这天之前股票的最低价格。 所以我们可以在遍历股票价格的时候不断更新股…

OCP NVME SSD规范解读-4.NVMe IO命令-2

NVMe-IO-3: 由于设备具有掉电保护功能(如Power Loss Protection,PLP),因此在以下情况下,性能不应降低: FUA(Force Unit Access):是计算机存储设备中的一种命…

《别让猴子跳回背上》——管理者的时间管理

讲时间管理的书很多,但这本是专门讲给管理者的时间管理。 在职场中,许多管理者都会碰到工作计划执行不下去、组织目标难于实现的问题,搭进了自己所有可以支配的时间,仍旧是焦头烂额,顾此失彼;而下属则因为…

Linux 线程安全 (2)

文章目录 线程同步概念条件变量使用生产消费模型信号量的使用读写锁的使用 Linux 线程安全 (1) 线程同步概念 竞态条件:因为时序问题,而导致程序异常. 饥饿问题:只使用互相锁保证线程安全时,锁资源总被某…

web三层架构

目录 1.什么是三层架构 2.运用三层架构的目的 2.1规范代码 2.2解耦 2.3代码的复用和劳动成本的减少 3.各个层次的任务 3.1web层(表现层) 3.2service 层(业务逻辑层) 3.3dao 持久层(数据访问层) 4.结合mybatis简单实例演示 1.什么是三层架构 三层架构就是把…

C#下将点云数据保存为PLY格式

目前没有找到C#下将点云数据保存为PLY格式的库,查看了一下PLY格式,所以自己写了个方法实现点云数据保存PLY格式 public static string SavePointCloudToPLY(string No, float[] x, float[] y, float[] z){ string result "";Task.Run(() >…

开发知识点-JAVA图形化-JavaFX

JavaFX JavaFX通用漏洞利用工具开发从无到无环境配置vscode配置JavaFX JavaFX基本程序结构创建项目新建一个包新建入口类(主类)新建(FX)label标签 创建按钮 JavaFX应用的 Stage窗口JavaFX应用的 Scene 场景类Node UI控件的通用属性…

Linux操作系统极速入门[常用指令]

linux概述: Linux是一套免费使用和自由传播的操作系统 我们为什么要学,Linux? 主流操作系统: linux系统版本: 内核版: 由linux核心团队开发,维护 免费,开源 负责控制硬件 发行版&…

Grafana告警发送至飞书配置指定at某人或所有人

1.问题描述 通过webhook向飞书机器人发送消息,根据飞书机器人官方文档,始终无法指定某个人或者所有人通知,后来发现是文档参数有问题。 文档地址:https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot 官方文档给…

UGUI:一个轻量级的TFTLCD彩色显示屏GUI库

目录 一、引言 二、移植说明 三、如何使用UGUI函数 2.1 UGUI函数介绍 2.2 窗口控件管理 2.3 如何建立一个按键 四、如何实现触摸控制 一、引言 UGUI是一个经过精心设计的轻量级TFT-LCD彩色显示屏GUI库,旨在为用户提供高效、稳定且易于使用的图形用户界面。该…

Spring基础IoC(控制反转)与DI(依赖注入)

1. Spring 基础 1.1 什么是Spring框架?它能带来那些好处? Spring 是一个开源的轻量级的 Java 开发框架,可以帮助开发人员更高效的进行开发,主要优势在于简化开发和框架整合。 Spring框架整合了很多模块,这些模块可以…

【Python排序算法系列】—— 选择排序

​ 🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 选择排序 过程演示: 选择排序实现代码: 分析选择排序&#xff1a…

Spring AOP—深入动态代理 万字详解(通俗易懂)

目录 一、前言 二、动态代理快速入门 1.为什么需要动态代理? : 2.动态代理使用案例: 3.动态代理的灵活性 : 三、深入动态代理 1.需求 : 2.实现 : 2.1 接口和实现类 2.2 提供代理对象的类 2.3 测试类 3.引出AOP : 四、总结 一、前言 第四节内容&…

学习笔记|电动汽车上CAN报文解析

电动汽车,以电池和电机系统取代了内燃机汽车的发动机系统,使得汽车上主要的结构和电气件发生了很大变化。在传统汽车上已经比较成熟的CAN总线技术,电动汽车仍然需要作出必要调整才能够使用。 1 电动汽车的CAN协议 常用车辆CAN总线通讯协议&a…

【数据结构】排序之插入排序

排序目录 1.前言2. 排序的概念及其运用2.1 排序的概念2.2 排序的运用2.3 常见的排序算法 3. 插入排序3.1 基本思想3.2 直接插入排序3.2.1 直接插入排序实现3.2.1.1 分析3.2.1.2 代码实现 3.3 希尔排序3.3.1 希尔排序实现3.3.1.1 分析3.3.1.2 代码实现 4. 附代码4.1 sort.h4.2 s…

【第七在线】为什么智能商品管理是对传统商品管理模式的颠覆?

智能商品管理确实在一定程度上颠覆了传统的商品管理模式。传统商品管理通常依赖于人工的经验和决策,而智能商品管理则利用人工智能和相关技术来提供更智能化和高效化的解决方案。 智能商品管理通过数据分析和预测能力,可以更准确地预测市场需求和销售趋…

AI智能分析网关V4区域人数超员算法模型的应用原理及使用场景

视频AI智能分析技术已经深入到人类生活的各个角落,与社会发展的方方面面紧密相连。从日常生活中的各种场景,如人脸识别、车牌识别,到工业生产中的安全监控,如工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品…

医院绩效考核系统源码,java源码,商业级医院绩效核算系统源码

医院绩效定义: “医院工作量绩效方案”是一套以工作量(RBRVS,相对价值比率)为核算基础,以工作岗位、技术含量、风险程度、服务数量等业绩为主要依据,以工作效率和效益、工作质量、患者满意度等指标为综合考…

D9741 PWM控制器电路,定时闩锁、短路保护电路,输出基准电压(2.5V) 采用SOP16封装

D9741是一块脉宽调制方三用于也收路像机和笔记本电的等设备上的直流转换器。在便携式的仪器设备上。 主要特点:● 高精度基准电路 ● 定时闩锁、短路保护电路 ● 低电压输入时误操作保护电路 ● 输出基准电…