【Qt】常用控件(按钮/单选按钮/复选按钮/QLabel)


需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。


目录

一、按钮类控件

1、QPushButton(按钮)

1.1pushButtn中插入图片(void setIcon(const QIcon &icon);)

1.2给按钮插入图片并设置快捷键或组合快捷键(void setShortcut(const QKeySequence &key)

2、QRadioButton(单选按钮)

2.1使用单选按钮进行单选(setEnabled、setCheckable、setChecked)

2.2单选按钮的槽函数

2.3使用单选按钮实现模拟点餐的功能(QButtonGroup类对单选按钮分组)

3、QCheckBox(复选按钮)

二、显示类控件

1、QLabel(显示文本和图片)

1.1设置文本类型(void setTextFormat(Qt::TextFormat);)

1.2在文本中设置图片并充满(void setScaledContents(bool);+重写resizeEvent事件)

1.3文本格式相关的API

1.3.1设置文本的方向

1.3.2设置文本自动换行

1.3.3设置缩进

1.3.4设置文本的边距

2、QLabel伙伴(使用QLabel对单选按钮/复选按钮进行绑定)


一、按钮类控件

QPushButton继承自QAbstractButton,这是一个抽象类,是其他按钮的父类。

继承关系:

属性

说明

text

按钮中的文本

icon

按钮中的图标

iconSize

按钮中图标的尺寸

shortCut

按钮中对应的快捷键

autoRepeat

按钮是否会被重复触发。

当鼠标左键按住不放时,如果设置为true,则会持续产生鼠标点击事件;如果设置为false,则必须释放鼠标,再次按下鼠标时才能产生点击事件。

autoRepeatDelay

按住按钮多久之后,开始重复触发

autoRepeatlnterval

重复触发周期

1、QPushButton(按钮)

QAbstractButton中。和QPushButton相关性较大的属性:

1.1pushButtn中插入图片(void setIcon(const QIcon &icon);)

1.2给按钮插入图片并设置快捷键或组合快捷键(void setShortcut(const QKeySequence &key)

设置的const QKeySequence &key可以是单个按键,也可能是组合键。

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置target按钮的图标及大小ui->pushButtonTarget->setIcon(QIcon("://C:/Users/86151/Desktop/Qt.jpg"));ui->pushButtonTarget->setIconSize(QSize(120, 120));// 设置上下左右图标及大小ui->pushButtonUp->setIcon(QIcon("://C:/Users/86151/Desktop/up.png"));ui->pushButtonUp->setIconSize(QSize(100, 100));ui->pushButtonDown->setIcon(QIcon("://C:/Users/86151/Desktop/down.png"));ui->pushButtonDown->setIconSize(QSize(100, 100));ui->pushButtonLeft->setIcon(QIcon("://C:/Users/86151/Desktop/left.png"));ui->pushButtonLeft->setIconSize(QSize(100, 100));ui->pushButtonRight->setIcon(QIcon("://C:/Users/86151/Desktop/right.png"));ui->pushButtonRight->setIconSize(QSize(100, 100));// 对上下左右四个按键设置键盘快捷键// 方式1:设置字母// ui->pushButtonUp->setShortcut(QKeySequence("ctrl + w"));// ui->pushButtonDown->setShortcut(QKeySequence("s"));// ui->pushButtonLeft->setShortcut(QKeySequence("a"));// ui->pushButtonRight->setShortcut(QKeySequence("d"));// 方式二:设置枚举ui->pushButtonUp->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_W)); // 组合按键ui->pushButtonDown->setShortcut(QKeySequence(Qt::Key_S));ui->pushButtonLeft->setShortcut(QKeySequence(Qt::Key_A));ui->pushButtonRight->setShortcut(QKeySequence(Qt::Key_D));// 开启鼠标点击的连发功能(快捷键默认开启连发功能,单鼠标没有,需要手动设置)ui->pushButtonUp->setAutoRepeat(true);ui->pushButtonDown->setAutoRepeat(true);ui->pushButtonLeft->setAutoRepeat(true);ui->pushButtonRight->setAutoRepeat(true);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButtonUp_clicked()
{// 获取到target的位置QRect rect = ui->pushButtonTarget->geometry();ui->pushButtonTarget->setGeometry(rect.x(), rect.y() - 5, rect.width(), rect.height());
}void Widget::on_pushButtonDown_clicked()
{// 获取到target的位置QRect rect = ui->pushButtonTarget->geometry();ui->pushButtonTarget->setGeometry(rect.x(), rect.y() + 5, rect.width(), rect.height());
}void Widget::on_pushButtonLeft_clicked()
{// 获取到target的位置QRect rect = ui->pushButtonTarget->geometry();ui->pushButtonTarget->setGeometry(rect.x() - 5, rect.y(), rect.width(), rect.height());
}void Widget::on_pushButtonRight_clicked()
{// 获取到target的位置QRect rect = ui->pushButtonTarget->geometry();ui->pushButtonTarget->setGeometry(rect.x() + 5, rect.y(), rect.width(), rect.height());
}

注意:使用快捷键按住不放是会一直发生移动的,而使用鼠标按住不放则不会产生一直移动的效果,必须手动开启鼠标的长按连发功能。 

2、QRadioButton(单选按钮)

QAbstractButton中和QRadioButton关系较大的属性:

属性

说明

setEnabled/setDisabled

设置按钮能否被选中

setCheckable

是否能选中,若设置为false,虽然不能选中,但是仍旧会响应点击事件

setChecked

是否已经被选中,checkable是checked的前提条件(可以用这个函数设置默认选中状态)

autoExclusive

是否排他,选中一个按钮之后是否会取消其他按钮的选中,对于QRadioButton来说默认是排他

2.1使用单选按钮进行单选(setEnabled、setCheckable、setChecked)

2.2单选按钮的槽函数

2.3使用单选按钮实现模拟点餐的功能(QButtonGroup类对单选按钮分组)

由于单选按钮存在排他机制,当存在多个单选按钮想要选中时,需要进行分组。

3、QCheckBox(复选按钮)

QAbstractButton中和QRadioButton关系较大的属性:

属性

说明

setCheckable

是否能选中,若设置为false,虽然不能选中,但是仍旧会响应点击事件

setChecked/isCheaked

是否已经被选中,checkable是checked的前提条件(可以用这个函数设置默认选中状态)

tristate

三态复选框(冷门)

二、显示类控件

1、QLabel(显示文本和图片)

QLabel适合仅显示不编辑的场景。

重要属性如下:

属性

说明

text

QLabel中的文本

textFormat

文本的格式:

Qt::PlainText 纯文本

Qt::RichText 富文本(支持html标签)

Qt::MarkdownText markdown格式

Qt::AutoText 根据文本内容自动决定文本格式

pixmap

QLabel内部包含的图片(用于设置图片)

scaledContents

设置为true表示内容自动拉伸填充。反之则不会(一般配合pixmap用于拉伸填充图片)

alignment

对齐方式,可以设置水平和垂直方向如何对齐

wordWrap

设置为true内部文本会自动换行,反之则不会

indent

设置文本缩进,水平和垂直方向都生效

margin

内部文本和边框中间的边距

它不同于indent,它在上下左右四个方向都同时有效

而indent最多只有两个方向生效(具体哪两个方向取决于alignment)

openExternallinks

是否允许打开一个外部链接,当QLabel内容包含url的时候才涉及

buddy

给QLabel关联一个"伙伴",这样点击QLabel时就能激活对应的伙伴。例如伙伴如果是一个QCheckBox,那么该QCheckBox将会被选中。(QLabel特有的机制)

1.1设置文本类型(void setTextFormat(Qt::TextFormat);)

1.2在文本中设置图片并充满(void setScaledContents(bool);+重写resizeEvent事件)

当用户手动拖拽窗口大小时,就会触发resize事件,把窗口大小从A大小拖拽变成B大小会触发一连串的resizeEvent。

为了让label中的图片随时充满整个widget,可以让Widget窗口类,重写父类(QWidget)的resizeEvent虚函数。(将其改成每次触发一个resizeEvent事件都会去调用一次对应的虚函数)

1.3文本格式相关的API

1.3.1设置文本的方向

设置文本的方向只要考虑两个方向:水平方向(靠左、居中、靠右)和垂直方向(靠上、居中、靠下)。两两组合即可。

ui->label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // 水平居中 | 垂直居中

1.3.2设置文本自动换行

1.3.3设置缩进

Qt中的indent缩进,是每一行都会缩的。indent最多只有两个方向生效(具体哪两个方向取决于对齐方式alignment)

1.3.4设置文本的边距

2、QLabel伙伴(使用QLabel对单选按钮/复选按钮进行绑定)

Qt中,可以在QLabel的文本中使用“&”符号来表示快捷键。例如label中写道:“哈哈哈&A”,那么就可以通过Alt + a键来对绑定的单选按钮/复选按钮进行快速选定。 

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

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

相关文章

Java 学习和实践笔记(40):String类详解

示例代码&#xff1a; public class TestString {public static void main(String[] args) {String s0 null;//这是什么都没有&#xff0c;连对象都没有&#xff0c;也就是指针还没有指到某一个地址String s1 "";//这是有对象了&#xff08;指针已指向某一个地址了…

如何使用 ArcGIS Pro 生成TIN

三角网是一种常用于表示地表地形的数字地球模型&#xff08;DEM&#xff09;方式&#xff0c;我们可以通过 ArcGIS Pro 将等高线和高程点转换为TIN&#xff0c;这里为大家介绍一下转换方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的高…

智能合约 - 部署ERC20

Remix介绍 Remix是一个由以太坊社区开发的在线集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在帮助开发者编写、测试和部署以太坊智能合约。它提供了一个简单易用的界面&#xff0c;使得开发者可以在浏览器中直接进行智能合约的开发&#xff0c;而无需安装任何额外的…

springboot整合springsecurity,从数据库中认证

概述&#xff1a;springsecurity这个东西太容易忘了&#xff0c;这里写点东西&#xff0c;避免忘掉 目录 第一步&#xff1a;引入依赖 第二步&#xff1a;创建user表 第三步&#xff1a;创建一个用户实体类&#xff08;User&#xff09;和一个用于访问用户数据的Repository…

Transformer的前世今生 day01(预训练、统计语言模型)

预训练 在相似任务中&#xff0c;由于神经网络模型的浅层是通用的&#xff0c;如下图&#xff1a; 所以当我们的数据集不够大&#xff0c;不能产生性能良好的模型时&#xff0c;可以尝试让模型B在用模型A的浅层基础上&#xff0c;深层的部分自己生成参数&#xff0c;减小数据集…

RabbitMQ的幂等性、优先级队列和惰性队列

文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、…

【uniapp】表单验证不生效的解决方案

表单验证这个常见的功能&#xff0c;明明在element ui等框架已经用的很熟了&#xff0c;在uniapp开发时还是处处碰壁&#xff1f;这篇文章我会提示uni-forms表单验证的几个注意点&#xff0c;帮助大家排查。 示例 下面是一份包含普通验证和自定义验证的示例&#xff1a; <…

【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程

文章目录 一、什么是CodeGeeX&#xff08;一&#xff09;我理解的CodeGeeX&#xff08;二&#xff09;优缺点 二、CodeGeex下载、安装、注册&#xff08;一&#xff09;安装VS Code(Visual Studio Code)&#xff08;二&#xff09;下载安装CodeGeeX&#xff08;三&#xff09;注…

Java项目:59 ssm小型企业办公自动化系统的设计和开发+vue

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务&#xff0c; 其管理员管理部门经理&#xff0c;管理总经理&#xff0c;管理员工和员工留言以及员工工资&…

搭建 es 集群

一、VMware准备机器 首先准备三台机器 这里我直接使用 VMware 构建三个虚拟机 都是基于 CentOS7 然后创建新用户 部署 es 需要单独创建一个用户&#xff0c;我这里在构建虚拟机的时候直接创建好了 然后将安装包上传 可以使用 rz 命令上传&#xff0c;也可以使用工具上传 工…

RK3588_Qt交叉编译环境搭建

buildroot编译 进入 /home/linux/plat/rk3588/sdk/buildroot 目录下&#xff0c;执行 Source ./envsetup.sh 选择具体平台编译&#xff0c;后再执行make编译 /home/linux/plat/rk3588/sdk/buildroot/output/OK3568/images 生成的rootfs.ext2镜像重新烧写到rk3568开发板中&…

PHP姓名快速匿名化工具(重组脱敏)

PHP姓名重组工具(脱敏/匿名化工具) 将excel数据姓名列粘贴提交&#xff0c;得到随机姓随机中间字随机尾字的重组姓名 那些年自用瞎搞的代码&#xff0c;今日整理成网页交提交得到结果的交互功能分享。 <?php //PHP姓名重组工具(脱敏/匿名化工具) //将excel数据姓名列粘贴…

elk收集k8s微服务日志

一、前言 使用filebeat自动发现收集k8s的pod日志&#xff0c;这里分别收集前端的nginx日志&#xff0c;还有后端的服务java日志&#xff0c;所有格式都是用json格式&#xff0c;建议还是需要让开发人员去输出java的日志为json&#xff0c;logstash分割java日志为json格式&#…

DockerFile遇到的坑

CMD 命令的坑 dockerfile 中的 CMD 命令在docker run -it 不会执行 CMD 命令。 FROM golang WORKDIR / COPY . ./All-in-one CMD ["/bin/sh","-c","touch /kkk.txt && ls -la"] RUN echo alias ll"ls -la" > ~/.bashrc(不…

C语言数组—二维数组

二维数组的创建 //数组创建 int arr[3][4]; //三行四列&#xff0c;存放整型变量 double arr[2][4];二维数组的初始化 我们如果这样初始化&#xff0c;效果是什么样的呢 int arr[3][4] { 1,2,3,4,5,6,7,8,9,10,11,12 };那如果我们不写满十二个呢 int arr[3][4] { 1,2,3,4…

一文快速掌握docker的理念和基本使用

写在文章开头 写于一个周末&#xff0c;在复盘梳理文章时候发现这一篇关于早期了解docker时记录的文档&#xff0c;仔细阅读了一下&#xff0c;为了保证文章更加清晰以便读者使用。故再次重新一次梳理一次&#xff0c;通过这篇文章&#xff0c;你将会对docker的基本理念和基础…

Stable Diffusion WebUI 生成参数:采样器(Sampling method)和采样步数(Sampling steps)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 大家好&#xff0c;我是水滴~~ 本文将深入探讨Stable Diffusion WebUI生成参数中的采样器和采样步数&#xff0c;旨在为读者呈现一个全面而细致的解析。我们将从采样器和采样步数的概念出发&…

内网安全之-NTLM协议详解

NTLM&#xff08;New Technology LAN Manager&#xff09;身份验证协议是微软用于Windows身份验证的主要协议之一。早起SMB协议以明文口令的形式在网络上传输&#xff0c;因此产生了安全性问题。后来出现了LM&#xff08;LAN Manager&#xff09;身份验证协议&#xff0c;它非常…

数据可视化实战(二)

将每个城市在每个月份平均PM2.5绘制成折线图 import pandas as pd import matplotlib.pyplot as plt df pd.read_excel(./PM2.5.xlsx)display(df.head(10)) df.shape # (161630, 15)城市年份月份日期小时季节PM2.5露点湿度压强温度风向累计风速降水量累计降水量0北京2010112…

qt+ffmpeg 实现音视频播放(二)之音频播放

一、音频播放流程 1、打开音频文件 通过 avformat_open_input() 打开媒体文件并分配和初始化 AVFormatContext 结构体。 函数原型如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); 参数说…