第五篇:其他窗口部件 QAbstractButton

QAbstractButton

QAbstractButton 类是按钮部件的抽象基类,提供了按钮的通用功能。它的子类包括标准按钮 QPushButton、工具按钮 QToolButton、复选框 QCheckBox和单选按钮 QRadioButton 等。

QPushButton

QPushButton 提供了创建交互按钮的基本功能。它可以包含文本、图标等,并能够发射各种信号,使得开发者可以轻松地实现按钮的交互行为。

#include <QApplication>
#include <QPushButton>
#include <QMessageBox>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);QPushButton btn;// 设置文本btn.setText("按钮");btn.show();// 连接信号槽点击后弹出对话框QObject::connect(&btn, &QPushButton::clicked, []() {QMessageBox::information(nullptr, "Clicked", "button clicked!");});return a.exec();
}

在这里插入图片描述

QToolButton

QToolButton 是一种特殊的按钮,可以快速访问特定的命令或选项。与普通的命令按钮不同,工具按钮通常不显示文本标签(不代表不能),而是显示图标。当使用 QToolBar::addAction() 创建新的 QAction 实例或使用 QToolBar::addActions() 将现有操作添加到工具栏时,通常使用 QToolButton。

#include <QApplication>
#include <QHBoxLayout>
#include <QToolButton>
#include <QMenu>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget w;QToolButton btn1;// 设置箭头类型btn1.setArrowType(Qt::DownArrow);// 设置按钮是否自动突出,默认为 falsebtn1.setAutoRaise(true);QToolButton btn2;btn2.setArrowType(Qt::LeftArrow);QToolButton btn3;// 设置文本btn3.setText("查看");// 设置图标btn3.setIcon(QIcon("C:\\Users\\yxc\\Pictures\\Camera Roll\\discord_midjourney_9_.png"));// 设置样式btn3.setToolButtonStyle(Qt::ToolButtonTextUnderIcon);QToolButton btn4;// 设置菜单弹出方式(默认QToolButton::DelayedPopup按一会再弹出)btn4.setPopupMode(QToolButton::InstantPopup);// 添加菜单QMenu menu;menu.addAction("剪切");menu.addAction("粘贴");menu.addAction("复制");btn4.setMenu(&menu);QHBoxLayout layout;layout.addWidget(&btn1);layout.addWidget(&btn2);layout.addWidget(&btn3);layout.addWidget(&btn4);w.setLayout(&layout);w.show();return a.exec();
}

在这里插入图片描述

QToolButton 的样式:

常量描述
Qt::ToolButtonIconOnly只显示图标
Qt::ToolButtonTextOnly只显示文本
Qt::ToolButtonTextBesideIcon文本显示在图标旁边
Qt::ToolButtonTextUnderIcon文本显示在图标下方
Qt::ToolButtonFollowStyle根据QStyle::StyleHint格式显示

QCheckBox

QCheckBox 是一个选项按钮,可以打开(选中)或关闭(未选中)。如果复选框被选中,再次点击这个按钮选中状态会被取消。。复选框通常会向用户提供“多选多”的选择。然而复选框也可以实现“多选一”。例如:QButtonGroup可用于对复选按钮进行逻辑分组(QButtonGroup不提供任何视觉表示),从而允许使用独占复选框。

下图进一步说明了独占和非独占复选框之间的区别(将两种复选框放在了两个QGroupBox容器中):

在这里插入图片描述

实现独占需要设置 autoExclusive 属性为 true。

在这里插入图片描述

Qt::CheckState类型:

常量描述
Qt::Unchecked未选中
Qt::PartiallyChecked半选中
Qt::Checked选中

QCheckBox 默认是两种选中状态,选中和未选中,setTristate(true)用来开启半选中状态。

#include <QApplication>
#include <QWidget>
#include <QCheckBox>
#include <QVBoxLayout>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget w;// 垂直布局(暂时先使用,后面会仔细学习)QVBoxLayout layout(&w);// 添加复选框QCheckBox chkBox1;chkBox1.setText("语文");QCheckBox chkBox2;chkBox2.setText("数学");chkBox2.setChecked(true);QCheckBox chkBox3;chkBox3.setText("英语");chkBox3.setTristate(true);chkBox3.setCheckState(Qt::PartiallyChecked);layout.addWidget(&chkBox1);layout.addWidget(&chkBox2);layout.addWidget(&chkBox3);w.show();return a.exec();
}

在这里插入图片描述

QRadioButton

QRadioButton 是一个选项按钮,可以打开(选中)或关闭(未选中)。单选按钮通常会向用户提供“多选一”的选择。如果用户选择了另一个按钮,则先前选择的按钮将关闭。如果单选按钮被选中,再次点击这个按钮选中状态是不能被取消的。这是与 QCheckBox 的不同点

#include <QApplication>#include "widget.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

在这里插入图片描述

运行结果如图所示:

在这里插入图片描述

如果我们使用鼠标点击了某个单选按钮,其他按钮将取消选中。

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

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

相关文章

css3+javaScript实现一个左右钟摆-摇晃的红灯笼网页特效

css3javaScript实现一个左右钟摆-摇晃的红灯笼网页特效&#xff01;前天逛博客时无意中看见了&#xff0c;别人的博客顶部有一个会左右钟摆的摇晃的红灯笼&#xff0c;产生了想法&#xff0c;我也想给自己做一个&#xff0c;但是网上找了很多方案&#xff0c;都没有实现。终于在…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 &#xff08;三&#xff09; 第三遍阅读&#xff08;精读&#xff09;3.1 Attention和Self-Attention的区别&#xff1f;3.2 Transformer是如何进行堆叠的&#xff1f;3.3 如何理解Positional Encoding&#xff1f;3.x 文章涉及…

【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]

阅读导航 引言一、简介二、成员函数三、使用示例四、C模拟实现五、std::shared_ptr的线程安全问题六、总结温馨提示 引言 在 C 动态内存管理中&#xff0c;除了 auto_ptr 和 unique_ptr 之外&#xff0c;还有一种智能指针 shared_ptr&#xff0c;它可以让多个指针共享同一个动…

钉钉副总裁李智勇:AI超级助理,提升大模型时代生产力

微软比尔盖茨此前曾预言:“五年内&#xff0c;每个人都将拥有AI私人助理Agent&#xff0c;Agent将颠覆软件行业 。” 近日以来&#xff0c;在GPT store正式上线点爆情绪之后&#xff0c;无论国内外&#xff0c;Agent都是创业圈里炙手可热的新贵。一场关于Agent创业比拼大赛&am…

S2-04 ESP-IDF开发 : IIC

IIC IIC(Inter&#xff0d;Integrated Circuit)总线是一种由NXP&#xff08;原PHILIPS&#xff09;公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信&#xff0c;在小数据量场合使用&#xff…

【Linux第二课-权限】操作系统、Linux用户、Linux权限、Linux文件类型、粘滞位

目录 操作系统shell外壳为什么有shell外壳shell外壳是什么shell外壳工作原理 Linux用户root用户与非root用户root用户与普通用户的切换普通用户 --> root用户root用户 --> 普通用户普通用户 --> 普通用户对一条指令提升为root权限进行执行 Linux权限Linux中的权限角色…

解决国内Linux服务器无法使用Github的方法

解决思路&#xff1a;修改Host https://www.ipaddress.com/ 利用上面的网站查询github.com和raw.githubusercontent.com的DNS解析的IP地址 最后&#xff0c;修改服务器的/etc/hosts 添加如下两行&#xff1a; 140.82.112.3 github.com 185.199.108.133 raw.githubuserconte…

树形结构下拉框组件vue-treeselect的使用(安装、模糊匹配、单选、多选、延迟加载、异步搜索等)

一、基本使用流程 首先npm安装依赖 npm install riophae/vue-treeselect --save然后在需要使用的组件中引入 import Treeselect from riophae/vue-treeselect import riophae/vue-treeselect/dist/vue-treeselect.css声明组件 components: { Treeselect }使用 <treesele…

安装布隆过滤器

上传并解压文件解压文件 tar -zxvf RedisBloom-2.2.4.tar.gz 进入解压好的文件 make一下 返回进入conf 配置文件 loadmodule /usr/local/etc/redis/redisbloom.so 粘入 拷贝redisbloom.so到容器 : docker cp redisbloom.so redis:/usr/local/etc/redis 重启redis : docker …

NX二次开发获取圆弧的四个象限点

我是用来用来画水路线框的UF_MODL_ask_curve_points&#xff08;&#xff09;可以按弧长或者弧度获取曲线的等分点&#xff0c;取PI/2的圆弧&#xff0c;即将圆弧四等分&#xff0c;你也可以取任意等分点。 int GetArcPoint(tag_t arc_tag,double point[4][3]) {if(arc_tag0)r…

Ubuntu 20.04安装yum报错:E: Unable to locate package yum

直接上解决方案&#xff01; 1、选择自己对应的版本的源地址 注意需要选择跟系统版本一致的&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 找到Ubuntu点击小问号&#xff0c;进去选择对应的版本&#xff0c;将下面的镜像复制到Linux系统的 /etc/apt/sourc…

vue2 使用pdf.js 实现pdf预览,并可复制文本

需求&#xff1a;pdf预览&#xff0c;并且可以选中pdf的内容进行复制。 在ruoyi的vue前端项目中用到&#xff0c;参考了网上不少文章&#xff0c;因为大部分没给具体的pdf.js版本&#xff0c;导致运行过程中报各种api 错误&#xff0c;经过尝试以下版本可用&#xff0c…

ARM多核调度器DSU

1. 背景 从A75开始&#xff0c;ARM提出了一个新的多核心管理系统单元&#xff0c;叫做DSU(DynamIQ Shared Unit)。DSU的核心功能是控制CPU内核&#xff0c;使其成簇Cluster使用&#xff0c;簇内每一个核心可以单独开关、调整频率/电压&#xff0c;能效表现更佳&#xff0c;甚至…

Docker-Confluence部署记录

启动 docker container run -v $(pwd):/var/atlassian/application-data/confluence/ --nethost -d --nameconfluence_720_20240120 confluence/confluence:7.2.0新建mysql数据库 导入破解包 atlassian-agent 参考-Confluence 破解方式&#xff08;Linux&#xff09; 按流程破…

springcloud OpenFeign服务接口调用

文章目录 代码下载地址OpenFeign简介OpenFeign使用步骤测试 OpenFeign超时控制超时设置&#xff0c;故意设置超时演示出错情况服务提供方8001故意写暂停程序服务消费方80添加超时方法PaymentFeignService服务消费方80添加超时方法OrderFeignController测试YML文件里需要开启Ope…

区间问题笔记

1、k倍区间 #include <iostream> #include<cmath> #include<vector> #include<algorithm> #include<stack> using namespace std;long long sum[100005]; // 前缀和数组 int cnt[100005]; // 记录sum[i]除k得到的余数的个数 int ans;int…

操作系统实验报告

目录 目录 实验一 一、实验结果 实验二 使用信号量实现进程互斥与同步 一、实验结果 1. 使用信号量实现有限缓冲区的生产者和消费者问题 2. 使用信号量实现读进程具有优先权的读者和写者问题 实验三 死锁和预防 一、实验要求 二、实验内容 三、实验结果 实验四 内…

js中高德地图如何自身所在城市

直接上代码 <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"initial-scale1.0, user-scalableno, wi…

Linux中的新建用户、切换用户

目录 一、Linux系统中有哪些用户 二、新建普通用户 三、root账号与普通账号的切换 一、Linux系统中有哪些用户 1.root 超级管理员&#xff08;不受权限约束&#xff09; 2.其他用户 普通用户&#xff08;受到权限约束&#xff09; 二、新建普通用户 创建新用户 sudo user…

如何删除Windows密码,看这篇文章就够了

删除Windows帐户的密码一点也不困难。删除密码后,当计算机启动时,你就不再需要登录到Windows。 在你删除密码后,家里或办公室里的任何人都可以完全访问你电脑上的所有内容,所以这样做并不是一件非常注重安全的事情。 ​注意:如果你忘记了密码,那么你将无法使用下面的方…