Qt常用控件 按钮
文章目录
- 1. QAbstractButton 简介
- 2. QPushButton
- 2.1 例子1,设置按钮的图标
- 2.2 例子2,设置按钮快捷键
- 3. QRadioButton
- 3.1 介绍
- 3.2 例子1,选择性别
- 3.3 例子2,试试其他的信号
- 3.3 例子3,分组
- 4. QCheckBox
- 4.1 介绍
- 4.2 例子1,获取复选框的内容
1. QAbstractButton 简介
QPushButton
继承⾃ QAbstractButton
。这个类是⼀个抽象类.是其他按钮的⽗类。QAbstractButton
继承自QWidget
下面是QAbstractButton
的一些属性
属性 | 说明 |
---|---|
text | 按钮中的⽂本 |
icon | 按钮中的图标 |
iconSize | 按钮中图标的尺⼨ |
shortCut | 按钮对应的快捷键 |
autoRepeat | 按钮是否会重复触发.当⿏标左键按住不放时,如果设为true,则会持续产⽣⿏标点击事件;如果设为false,则必须释放⿏标,再次按下⿏标时才能产⽣点击事件. (相当于游戏⼿柄上的"连发"效果) |
autoRepeatDelay | 重复触发的延时时间.按住按钮多久之后,开始重复触发. |
autoRepeatInterval | 重复触发的周期 |
2. QPushButton
2.1 例子1,设置按钮的图标
创建qrc文件,并导入图片
使用qt designer创建一个按钮
代码如下,使用了setIcon()
和setIconSize()
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QIcon icon(":/btnPic.png");ui->pushButton->setIcon(icon);ui->pushButton->setIconSize(QSize(100, 100));
}
效果如下
2.2 例子2,设置按钮快捷键
导入图片
设置按钮
编写代码,设置图标和快捷键
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置图标ui->targetBtn->setIcon(QIcon(":/img/plane"));ui->targetBtn->setIconSize(QSize(100, 100));ui->upBtn->setIcon(QIcon(":/img/up"));ui->upBtn->setIconSize(QSize(50, 50));ui->downBtn->setIcon(QIcon(":/img/down"));ui->downBtn->setIconSize(QSize(50, 50));ui->leftBtn->setIcon(QIcon(":/img/left"));ui->leftBtn->setIconSize(QSize(50, 50));ui->rightBtn->setIcon(QIcon(":/img/right"));ui->rightBtn->setIconSize(QSize(50, 50));// 设置快捷键ui->upBtn->setShortcut(Qt::Key_W);ui->downBtn->setShortcut(Qt::Key_S);ui->leftBtn->setShortcut(Qt::Key_A);ui->rightBtn->setShortcut(Qt::Key_D);
}
写槽函数
void Widget::on_upBtn_clicked()
{QRect pos = ui->targetBtn->geometry();ui->targetBtn->setGeometry(pos.x(), pos.y()-10, pos.width(), pos.height());
}void Widget::on_downBtn_clicked()
{QRect pos = ui->targetBtn->geometry();ui->targetBtn->setGeometry(pos.x(), pos.y()+10, pos.width(), pos.height());
}void Widget::on_leftBtn_clicked()
{QRect pos = ui->targetBtn->geometry();ui->targetBtn->setGeometry(pos.x()-10, pos.y(), pos.width(), pos.height());
}void Widget::on_rightBtn_clicked()
{QRect pos = ui->targetBtn->geometry();ui->targetBtn->setGeometry(pos.x()+10, pos.y(), pos.width(), pos.height());
}
完成了
键盘快捷键默认一直按是有连发功能的,如果想让鼠标一直按也有连发功能,可以使用setAutoRepeate()
方法
// 让upBtn有连发功能
ui->upBtn->setAutoRepeat(true);
如果想要触发按钮有多个按键,可以使用+号连接
// ctrl+w触发
ui->upBtn->setShortcut(Qt::CTRL+Qt::Key_W);
3. QRadioButton
3.1 介绍
单选按钮,继承自QAbstractButton
,下面是QRadioButton
常用的QAbstractButton
的一些属性
属性 | 说明 |
---|---|
checkable | 是否能选中 |
checked | 是否已经被选中.checkable是checked的前提条件. |
autoExclusive | 是否排他.选中⼀个按钮之后是否会取消其他按钮的选中.对于 QRadioButton 来说默认就是排他的. |
同理,上面的属性都有一个setXXX()
的方法
3.2 例子1,选择性别
在widget.ui
里设置基本界面
槽函数如下
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("选择的性别是: 男"); // 设置label的默认值
}void Widget::on_radioButton_male_clicked()
{ui->label->setText("选择的性别是: 男");
}void Widget::on_radioButton_female_clicked()
{ui->label->setText("选择的性别是: 女");
}void Widget::on_radioButton_other_clicked()
{ui->label->setText("选择的性别是: 其它");
}
如果想让男
这个按钮默认被选中,可以在构造函数这样写
ui->radioButton_male->setChecked(true);
如果不想让 其它
这个按钮被选择,可以在构造函数里这样写
ui->radioButton_other->setCheckable(false);
运行后发现,确实该按钮不能被选中了,但是仍然可以响应槽函数
如果不想让其响应槽函数,可以直接设置enable
属性,在QWidget
里学过
ui->radioButton_other->setEnabled(false);
3.3 例子2,试试其他的信号
在widet.ui
中拖上两个radiobutton
,转到槽
clicked()
点击,preassed()
按下,released()
释放信号,都很好理解。这里给这两个radiobutton
提那几另外两个槽函数
void Widget::on_radioButton_1_clicked(bool checked)
{qDebug() << "on_radioButton_1_clicked checked: " << checked;
}void Widget::on_radioButton_2_toggled(bool checked)
{qDebug() << "on_radioButton_2_toggled: " << checked;
}
运行结果如下
- 可以看到,对于
clicked(bool)
,当按钮被点击时,checked
会被置成true
,且每次点击都会触发。 - 对于
toggled(bool)
,当按钮被点击时,checked
会被置成true
,连续点击不会改变值,当按钮被切换时,会将checked
置成false
。 toggled(bool)
非常适合使用于QRadioButton
3.3 例子3,分组
在widget.ui
中搭出基本框架
现在按钮是全部排它的,也就是这8个按钮只能选择1个,现在要将其分组,在widget.cpp
的构造函数里写
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QButtonGroup* gp1 = new QButtonGroup(this);QButtonGroup* gp2 = new QButtonGroup(this);QButtonGroup* gp3 = new QButtonGroup(this);// 将按钮添加到GroupBox中gp1->addButton(ui->radioButton_A1);gp1->addButton(ui->radioButton_A2);gp1->addButton(ui->radioButton_A3);gp2->addButton(ui->radioButton_B1);gp2->addButton(ui->radioButton_B2);gp2->addButton(ui->radioButton_B3);gp3->addButton(ui->radioButton_C1);gp3->addButton(ui->radioButton_C2);
}
4. QCheckBox
4.1 介绍
QCheckBox
继承自QAbstractButton
表⽰复选按钮.可以允许选中多个,下面两个属性是比较常用的
属性 | 说明 |
---|---|
checkable | 是否能选中 |
checked | 是否已经被选中.checkable是checked的前提条件. |
4.2 例子1,获取复选框的内容
在widget.ui
中创建3个复选框, 1个按钮
给QPushButton
添加槽函数
void Widget::on_pushButton_clicked()
{QString s = "TODO: ";if(ui->checkBox->isChecked() == true) {s += ui->checkBox->text();s += " ";}if(ui->checkBox_2->isChecked() == true) {s += ui->checkBox_2->text();s += " ";}if(ui->checkBox_3->isChecked() == true) {s += ui->checkBox_3->text();s += " ";}ui->label->setText(s);
}
相关文章:

Qt常用控件 按钮
文章目录 1. QAbstractButton 简介2. QPushButton2.1 例子1,设置按钮的图标2.2 例子2,设置按钮快捷键 3. QRadioButton3.1 介绍3.2 例子1,选择性别3.3 例子2,试试其他的信号3.3 例子3,分组 4. QCheckBox4.1 介绍4.2 例…...

MySQL学习/复习10视图/用户/权限/语言连接数据库
一、视图 1.1创建视图 1.2视图影响基表 1.3基表影响视图 1.4删除视图 1.5视图使用规则 二、数据库的用户 2.1mysql中的user表 注意事项:主机/用户名/密码/权限 2.2用户的创建 注意事项:设置密码与登录地点需谨慎 2.3删除用户 注意事项:% 2.4…...

vulfocus在线靶场:tomcat-pass-getshell 弱口令 速通手册
目录 一、启动环境,访问页面,并登录,账号密码都是tomcat 二、哥斯拉打war包,图解 三、上传war包,图解 四、访问我们直接url/木马文件名/木马文件.jsp,是否存在了 五、 哥斯拉测试连接结果success&…...

c#:winform调用bartender实现打印(学习整理笔记)
效果 学习路径 C# winform调用Bartender进行自定义打印、批量打印、检索文件夹中的模板_哔哩哔哩_bilibili 一、初始环境搭建见: c#:winform引入bartender-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/143989473?sharetypeblogdetail&s…...

牛客题库 21738 牛牛与数组
牛牛与数组题目链接 题目大意 牛牛喜欢这样的数组: 1:长度为n 2:每一个数都在1到k之间 3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个请问一共有多少满足条件的数组,对 1 e 9 + 7 1e^9+7 1e9+7 取模 输入格式 输入两个整数 n , k n,k n,…...

探索PDFMiner:Python中的PDF解析利器
文章目录 **探索PDFMiner:Python中的PDF解析利器**1. 背景介绍:为何选择PDFMiner?2. PDFMiner是什么?3. 如何安装PDFMiner?4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应…...

掌握Go语言中的异常控制:panic、recover和defer的深度解析
掌握Go语言中的异常控制:panic、recover和defer的深度解析 在Go语言的编程世界中,异常处理是一个不可忽视的话题。Go语言提供了panic、recover和defer三个关键字来处理程序中的异常情况。本文将深入探讨这三个关键字的工作原理、使用场景和最佳实践,帮助读者在实际编程中更…...

云讷科技Kerloud无人飞车专利发布
云讷科技Kerloud无人飞车获得了“一种室内外两用的四旋翼无人飞车”的实用新型专利证书,作为科教社区第一款四旋翼飞车,这项技术结合了无人机和无人车的优势,提供了一种能够在多种环境下使用的多功能飞行器。 这项设计的优势如下ÿ…...

企业信息化-走进身份管理之搭建篇
一、身份管理是什么 我们先要弄懂统一身份管理到底是什么? 统一身份管理(Unified Identity Manager,UIM),身份管理(Identity Management,简称IDM),也被称为IAM&#…...

实践指南:EdgeOne与HAI的梦幻联动
在当今快速发展的数字时代,安全和速度已成为网络服务的基石。EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验。而HAI(HyperApplicationInventor…...

Exploring Prompt Engineering: A Systematic Review with SWOT Analysis
文章目录 题目摘要简介方法论背景相关工作评估结论 题目 探索快速工程:基于 SWOT 分析的系统评价 论文地址: https://arxiv.org/abs/2410.12843 摘要 在本文中,我们对大型语言模型 (LLM) 领域的提示工程技术进行了全面的 SWOT 分析。我们强…...

ByteBuffer 与 ByteBuf 的对比与优缺点分析
在 Java 网络编程和高性能 I/O 场景中,ByteBuffer 和 ByteBuf 是两种重要的缓冲区处理工具。ByteBuffer 是 Java NIO 标准库的一部分,而 ByteBuf 是由 Netty 框架提供的增强缓冲区工具。在实际开发中,选择哪一种取决于场景需求和性能目标。 …...

js高级06-ajax封装和跨域
8.1、ajax简介及相关知识 8.1.1、原生ajax 8.1.1.1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。 按需请求,可…...

RabbitMQ3:Java客户端快速入门
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

D 型 GaN HEMT 在功率转换方面的优势
氮化镓 (GaN) 是一种 III-V 族宽带隙半导体,由于在用作横向高电子迁移率晶体管 (HEMT) 时具有卓越的材料和器件性能,因此在功率转换应用中得到越来越多的采用。 HEMT 中产生的高击穿电场 (3.3 MV/cm) 和高二维电子气 (2DEG) 载流子迁移率 (2,000 cm 2 /…...

Java Web后端项目的特点和组成部分
技术栈 #### Java Web技术: - **Servlet**:Java Web的核心,用于处理HTTP请求。 - **WebServlet注解配置**:用于简化Servlet的配置。 - **HttpServlet基类**:大多数Servlet都继承自此基类。 - **请求响应处理**&#x…...

Vue3 + Vite + TS 项目引入 Eslint + Pritter
文章目录 一、ESLint 简介主要功能适用场景常用的 Eslint 配置项 二、Pritter 简介主要功能适用场景常用的 Prettier 配置项 三、Vue3 Vite TS 项目引入 Eslint Pritter1. 安装 ESLint2. 初始化 ESLint 配置3. 在 Vite 项目中启用 ESLint4. 在 VS Code 中启用 ESLint5. 集成…...

用Tauri框架构建跨平台桌面应用:1、Tauri快速开始
Tauri 是一个构建适用于所有主流桌面和移动平台的轻快二进制文件的框架。开发者们可以集成任何用于创建用户界面的可以被编译成 HTML、JavaScript 和 CSS 的前端框架,同时可以在必要时使用 Rust、Swift 和 Kotlin 等语言编写后端逻辑。 Tauri 是什么? |…...

Django实现智能问答助手-数据库方式读取问题和答案
扩展 增加问答数据库,通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑,比如使用自然语言处理(NLP)库。使用前端框架(如 Bootstrap)增强用户界面 1.注册模型到 Django Admin(admin.py…...

stm32利用LED配置基础寄存器+体验滴答定时器+hal库环境配置
P1 LED控制与流水灯效果实现 概述 大家好,今天我们来学习一下如何在STM32上控制LED灯,并且实现一个流水灯的效果。这不仅是一个基础的实践,也是嵌入式开发中非常常见的需求。 LED控制 1. LED初始化 首先,我们需要对LED灯对应…...

JAVA开源项目 桂林旅游景点导游平台 计算机毕业设计
博主说明:本文项目编号 T 079 ,文末自助获取源码 \color{red}{T079,文末自助获取源码} T079,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

docker安装使用Elasticsearch,解决启动后无法访问9200问题
1.docker安装、启动es docker pull elasticsearch:8.13.0docker images启动容器 docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS"-Xms256m -Xmx256m" --name es01 8ebd258614f1-d 后台运行-p 9200:9200 -p 9300:9300 开放与主机映射端口-e ES_JAVA_OPTS…...

GM、BP、LSTM时间预测预测代码
GM clc; clear; close all;%% 数据加载和预处理 [file, path] uigetfile(*.xlsx, Select the Excel file); filename fullfile(path, file); time_series xlsread(filename);% 确保数据是一列 time_series time_series(:);% 归一化数据 min_val min(time_series); max_v…...

《操作系统 - 清华大学》4 -5:非连续内存分配:页表一反向页表
文章目录 1. 大地址空间的问题2. 页寄存器( Page Registers )方案3. 基于关联内存(associative memory )的反向页表(inverted page table)4. 基于哈希(hashed)查找的反向页表5. 小结 1. 大地址空间的问题 …...

志愿者小程序源码社区网格志愿者服务小程序php
志愿者服务小程序源码开发方案:开发语言后端php,tp框架,前端是uniapp。 一 志愿者端-小程序: 申请成为志愿者,志愿者组织端进行审核。成为志愿者后,可以报名参加志愿者活动。 志愿者地图:可以…...

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化
一、背景 线上程序连接mongos超时,mongo监控显示连接数已使用100%。 java程序报错信息: org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…...

使用ufw配置防火墙,允许特定范围IP访问
文章目录 1. 安装 UFW(如果尚未安装)2. 允许特定 IP 地址访问 22 端口3. 允许特定子网访问 22 端口4. 启用 UFW5. 检查 UFW 状态6. 重新加载 UFW(如果需要)7. 删除规则(如果需要) 在ubuntu上使用 ufw&#…...

实现 UniApp 右上角按钮“扫一扫”功能实战教学
实现 UniApp 右上角按钮“扫一扫”功能实战教学 需求 点击右上角扫一扫按钮(onNavigationBarButtonTap监听),打开扫一扫页面(uni.scanCode) 扫描后,以网页的形式打开扫描内容(web-view组件),限制只能浏览带有执行域名的网站,例如…...

【2024亚太杯亚太赛APMCM C题】数学建模竞赛|宠物行业及相关产业的发展分析与策略|建模过程+完整代码论文全解全析
第一个问题是:请基于附件 1 中的数据以及你的团队收集的额外数据,分析过去五年中国宠物行业按宠物类型的发展情况。并分析中国宠物行业发展的因素,预测未来三年中国宠物行业的发展。 第一个问题:分析中国宠物行业按宠物类型的发展…...

ubtil循环函数调用
什么是until until循环是一种控制流结构。它与while循环相反,while循环是在条件为真时执行循环体,而until循环是在条件为假时执行循环体,直到条件为真时才停止循环。 until代码示例: i0 do until [ ! $i -lt 10 ] echo $…...