[Qt]常用控件介绍-按钮类控件-QPushButton、QRedioButton、QCheckBox、QToolButton控件

目录

1.QPushButton按钮

介绍

属性 

Demo:键盘方向键控制人物移动 

2.Redio Button按钮

属性

clicked、pressed、released、toggled区别 

单选按钮的分组

Demo:点餐小程序

 3.CheckBox按钮

属性

Demo:获取今天的形成计划

4.ToolButton按钮 


1.QPushButton按钮

介绍

        QPushButton是继承与一个QAbstractButton类,这个类是一个抽象的类,类内部包含了按钮类所需要的纯虚函数,是所有按钮的一个父类。在Qt Designer中也可以看到继承关系。

属性 
属性说明
text按钮的文本
icon按钮中的图标
iconSize按钮中图标的一个尺寸
shortCut

按钮对应的一个快捷

autoRepeat        按钮是否会重复触发,当鼠标按住不放的时候,如果设置为true的话,会持续产生鼠标点击事件,如果欸false的话,则需要释放鼠标,再次点击才会触发鼠标点击事件。
autoRepeatDelay        重复触发的延迟事件,按钮按住多久,才会触发第二次的鼠标点击事件
autoRepeatInterval重复触发的周期
Demo:键盘方向键控制人物移动 

        流程:放置按钮并设置图标-->按钮绑定槽函数-->设置快捷键-->开启按键连续触发

        对于快捷键的设置,需要传递一个QKeySequence对象参数,所以我们在设置时,要将快捷键设置在QKeySequence生成一个对象在传递给setShortCut函数。对于快捷键的设置可以是组合建,直接写入xx + xx字符串即可。对于上述的快捷键设置虽然说简单,但是没有安全性检查,对于Qt内部内置了一系列的枚举按键,可以使用枚举类型的变量设置快捷键,可以很好的检查快捷键的正确性。其实对于组合键的设置,是两个位图的相加。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton_false->setEnabled(false);//设置被移动的图片和大小ui->pushButton_people->setIcon(QIcon(":/people.png"));ui->pushButton_people->setIconSize(QSize(500, 500));//设置方向键的图标ui->pushButton_up->setIcon(QIcon(":/up.png"));ui->pushButton_down->setIcon(QIcon(":/down.png"));ui->pushButton_left->setIcon(QIcon(":/left.png"));ui->pushButton_right->setIcon(QIcon(":/right.png"));//设置快捷键--方式1
//    ui->pushButton_up->setShortcut(QKeySequence("w"));
//    ui->pushButton_down->setShortcut(QKeySequence("s"));
//    ui->pushButton_left->setShortcut(QKeySequence("a"));
//    ui->pushButton_right->setShortcut(QKeySequence("d"));//设置快捷键--方式2ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_W));ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_S));ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_A));ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_D));//设置鼠标连续触发(对于键盘来说默认就是连发的)ui->pushButton_up->setAutoRepeat(true);ui->pushButton_down->setAutoRepeat(true);ui->pushButton_left->setAutoRepeat(true);ui->pushButton_right->setAutoRepeat(true);
}Widget::~Widget()
{delete ui;
}//向上移动的按钮
void Widget::on_pushButton_up_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x(), rect.y() - 5, rect.width(), rect.height());
}//向下移动的按钮
void Widget::on_pushButton_down_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x(), rect.y() + 5, rect.width(), rect.height());
}//向左移动的按钮
void Widget::on_pushButton_left_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x() - 5, rect.y(), rect.width(), rect.height());
}//向右移动的按钮
void Widget::on_pushButton_right_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x() + 5, rect.y(), rect.width(), rect.height());
}

2.RedioButton按钮

        该按钮是一个单选的按钮,可以让我们在多个选项中选中一个。

属性
属性说明
checkable是否可以被选中
checked起初的时候,是否已经被选中
autoExclusive        是否排他,也就是说选中一个按钮之后是否会取消其他按钮的选中结果,默认来说是排他的。

        对于RedioButton来说,内部会有一个是否被选中的属性,这个属性不需要我们去手动改变,无论是PushButton触发的chicked信号,还是RedioButton触发的toggle信号都是由按钮自身检测到内部状态的变化而触发的信号,所以内部状态变化就包含了更新选中与为选中状态的字段了。

clicked、pressed、released、toggled区别 

        clicked是一次完整的点击后,触发点击信号,也就是鼠标按下并释放后触发,如果说释放的时候鼠标不在按钮的范围内也是不会触发的。pressed是鼠标按下就触发。released是鼠标释放就会触发,此时署鼠标释放的时候不管在哪里都会触发。toggled是checked属性改变的时候触发。也就是说连续点击的时候,不会触发信号,因为按钮的checked状态是没有改变的。

单选按钮的分组

        对于单选按钮有排他的属性,那我们如果向设置几个不同类别的排他选项怎么办呢,Qt内置了一个QButtonGroup类,可以实例化出按钮组的对象,内部提供了addButton接口函数,可以将我们创建的RedioButton添加到该对象内部,在一个对象内部的单选按钮就是分在了一个组。

Demo:点餐小程序
#include <QButtonGroup>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化组对象QButtonGroup* group1 = new QButtonGroup(this);QButtonGroup* group2 = new QButtonGroup(this);QButtonGroup* group3 = new QButtonGroup(this);//分组group1->addButton(ui->radioButton);group1->addButton(ui->radioButton_2);group1->addButton(ui->radioButton_3);group2->addButton(ui->radioButton_4);group2->addButton(ui->radioButton_5);group2->addButton(ui->radioButton_6);group3->addButton(ui->radioButton_7);group3->addButton(ui->radioButton_8);
}

 3.CheckBox按钮

        该按钮是一个复选按钮,可以允许选中多个,没有排他的属性。

属性
属性说明
checked是否被选中
checkable是否可以被选中
Demo:获取今天的形成计划

4.ToolButton按钮 

        QToolButton的大部分功能和QPushButton是一致的,但是QToolButton主要是应用于工具栏,菜单栏等场景。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot链接Kafka

一、SpringBoot生产者 &#xff08;1&#xff09;修改SpringBoot核心配置文件application.propeties, 添加生产者相关信息 # 连接 Kafka 集群 spring.kafka.bootstrap-servers192.168.134.47:9093# SASL_PLAINTEXT 和 SCRAM-SHA-512 认证配置 spring.kafka.properties.securi…

zerotier搭建虚拟局域网,自建planet

基于该开源项目 自建planet节点&#xff0c;更快速&#xff0c;更安全 本教程依据docker-zerotier-planet 项目文档书写&#xff0c;并以linux(centos 7)和windows作为示例&#xff0c;需要其他系统配置方法&#xff0c;可移步项目文档 一. 前置资源 具有外网ip的服务器 后面…

计算机网络 (44)电子邮件

一、概述 电子邮件&#xff08;Electronic Mail&#xff0c;简称E-mail&#xff09;是因特网上最早流行的应用之一&#xff0c;并且至今仍然是因特网上最重要、最实用的应用之一。它利用计算机技术和互联网&#xff0c;实现了信息的快速、便捷传递。与传统的邮政系统相比&#…

《机器学习》——DBSCAN算法

文章目录 DBSCAN算法简介DBSCAN算法原理核心概念聚类过程 DBSCAN模型模型API主要参数其他参数 DBSCAN算法实例实例步骤导入所需库导入数据文件传入变量DBSCAN聚类分析添加数据进原数据框对聚类结果进行评分 DBSCAN算法简介 DBSCAN&#xff08;Density - Based Spatial Cluster…

【2024年华为OD机试】 (C卷,100分)- 用连续自然数之和来表达整数(Java JS PythonC/C++)

一、问题描述 题目描述 一个整数可以由连续的自然数之和来表示。 给定一个整数&#xff0c;计算该整数有几种连续自然数之和的表达式&#xff0c;且打印出每种表达式。 输入描述 一个目标整数T (1 <T< 1000) 输出描述 该整数的所有表达式和表达式的个数。 如果有…

Redis--21--大Key问题解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Redis--20--大Key问题解析 一、如何发现Redis大Key1. 使用Redis命令行工具**MEMORY USAGE****RANDOMKEY****DEBUG OBJECT****SCAN命令****redis-cli 工具&#…

[操作系统] 深入理解约翰·冯·诺伊曼体系

约翰冯诺依曼&#xff08;John von Neumann&#xff0c;1903年12月28日—1957年2月8日&#xff09;&#xff0c;原名诺伊曼亚诺什拉约什&#xff08;Neumann Jnos Lajos&#xff09;&#xff0c;出生于匈牙利的美国籍犹太人数学家&#xff0c;20世纪最重要的数学家之一&#xf…

OpenCV实现Kuwahara滤波

Kuwahara滤波是一种非线性的平滑滤波技术&#xff0c;其基本原理在于通过计算图像模板中邻域内的均值和方差&#xff0c;选择图像灰度值较为均匀的区域的均值来替代模板中心像素的灰度值。以下是Kuwahara滤波的详细原理说明&#xff1a; 一、基本思想 Kuwahara滤波的基本思想…

vue项目引入阿里云svg资源图标

1&#xff1a;生成svg图标 登录阿里云官网 1.1 创建项目组 1.2 从阿里云网站上面获取喜欢的图标加入到已有的项目组 1.3 如果团队有自己的设计师&#xff0c;也可以让设计师上传自己的svg图标到阿里云指定的项目组&#xff1b; 使用的时候&#xff0c;把 资源包下载到本地项…

软件测试 —— 自动化测试(Selenium)

软件测试 —— 自动化测试&#xff08;Selenium&#xff09; 什么是SeleniumPython安装Selenium1.安装webdirver-manager2.安装Selenium 写一个简单用例CSS_SELECTOR和XPATH浏览器快速定位页面元素浏览器的前进&#xff08;forward&#xff09;&#xff0c;后退&#xff08;bac…

新垂直电商的社交传播策略与AI智能名片2+1链动模式S2B2C商城小程序的应用探索

摘要&#xff1a;随着互联网技术的不断进步和电商行业的快速发展&#xff0c;传统电商模式已难以满足消费者日益增长的个性化和多元化需求。新垂直电商在此背景下应运而生&#xff0c;通过精准定位、用户细分以及深度社交传播策略&#xff0c;实现了用户群体的快速裂变与高效营…

Jmeter进行http接口并发测试

目录&#xff1a; 1、Jmeter设置&#xff08;1&#xff09;设置请求并发数&#xff08;2&#xff09;设置请求地址以及参数&#xff08;3&#xff09;添加结果数 2、启动看结果 1、Jmeter设置 &#xff08;1&#xff09;设置请求并发数 &#xff08;2&#xff09;设置请求地址…

有一台服务器可以做哪些很酷的事情

有一台服务器可以做哪些很酷的事情 今天我也来简单分享一下&#xff0c;这几年来&#xff0c;我用云服务器做了哪些有趣的事情。 服务器推荐 1. 个人博客 拥有个人服务器&#xff0c;你可以完全掌控自己的网站或博客。 与使用第三方托管平台相比&#xff0c;你能自由选择网站…

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片&#xff01;

从网络的角度来看,用户输入网址到网页显示,期间发生了什么?

步骤&#xff08;总体来看&#xff09; 浏览器根据输入网页的URL进行解析&#xff0c;解析出对应的请求方式、URL、端口等&#xff0c;生成HTTP请求报文。浏览器查询缓存&#xff0c;检查缓存是否已经存在该URL的资源&#xff0c;如果缓存命中中直接读取并显示&#xff0c;比如…

MYSQL创建表

1.要求 2.步骤 1.创建数据库: create database mydb6_product;2.使用数据库: use mydb6_product;3.创建employees表&#xff1a; create table employees(id int primary key,name varchar(50) not null, age int not null,gender varchar(10) not null default unknown&…

计算机网络的五层协议

计算机网络的五层协议 ‌计算机网络的五层协议模型包括物理层、数据链路层、网络层、传输层和应用层&#xff0c;每一层都有其特定的功能和相关的协议。‌‌1 ‌物理层‌&#xff1a;负责传输原始的比特流&#xff0c;通过线路&#xff08;有线或无线&#xff09;将数据转换为…

C语言初阶习题【30】字符串左旋

1. 题目描述——字符串左旋 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2. 思路 先思考了下如何把最前面的字符串移到后面。 思路比较简单&#xff0c;就是把第一个字符保存下来&#xf…

ESP8266固件烧录

一、烧录原理 1、引脚布局 2、引脚定义 3、尺寸封装 4、环境要求 5、接线方式 ESP8266系列模块集成了高速GPI0和外围接口&#xff0c;这可能会导致严重的开关噪声。如果某些应用需要高功率和EMI特性&#xff0c;建议在数字I/0线上串联10到100欧姆。这可以在切换电源时抑制过冲…

word-break控制的几种容器换行行为详解

word-break 属性在控制换行行为时需要根据语言判断&#xff0c;对于中文 一个字符就是一个单词&#xff0c;字符换行不影响阅读理解&#xff0c;而对于英文来说&#xff0c;多个连续的字符才会是一个单词&#xff0c;例如中文的 早 英文为 morning。 morning7个字符才算一个单词…