第五篇:其他窗口部件 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,一经查实,立即删除!

相关文章

openssl3.2 - 官方demo学习 - smime - smenc.c

文章目录 openssl3.2 - 官方demo学习 - smime - smenc.c概述笔记END openssl3.2 - 官方demo学习 - smime - smenc.c 概述 读取X509证书, 用PKCS7加密明文(证书 明文 3DES_CBC), 保存为MIME格式的密文 openssl API的命名含义 BIO_new_file “new” a “file”, return a “…

开发安全之:Server-Side Request Forgery

Overview 函数 fsockopen() 将使用资源 URI 的用户控制数据启动与第三方系统的网络连接。攻击者可以利用此漏洞代表应用程序服务器发送一个请求&#xff0c;因为此请求将自应用程序服务器内部 IP 地址发出。 Details 当攻击者可以影响应用程序服务器建立的网络连接时&#xf…

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…

GitLab服务器忘记root密码处理方式

GitLab服务器忘记root密码处理方式 文章目录 GitLab服务器忘记root密码处理方式1. Gitlab查看用户id号1. 通过api接口查询2. 在Linux终端里直接通过curl命令查询 2. 进入GitLab数据库中查询并修改root密码 1. Gitlab查看用户id号 1. 通过api接口查询 接口查询地址&#xff1a;…

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中的权限角色…

jQuery深度笔记:从基础到高级

一、jQuery简介 jQuery是一个快速、小巧且富有特色的JavaScript库。自2006年诞生以来&#xff0c;它已经成为Web开发中最受欢迎的工具之一。通过简化和统一JavaScript API&#xff0c;jQuery使得开发者能够更高效地编写交互式网页和复杂的前端应用。 二、选择器 jQuery的选择器…

解决国内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 …

【设计模式】建造者模式就是游戏模式吗?

什么是建造者模式&#xff1f; 传说女娲是用泥巴捏出人来的&#xff0c;当时捏出的小泥人虽然每个都是两条腿、两只手、一个脑袋的样子&#xff0c;但是具体到每个部位&#xff0c;却有有所不同&#xff1a;有的小泥人手长一点&#xff0c;有的手短一点&#xff1b;有的脑袋圆…

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…

【Spring Boot 3】【Redis】分布式唯一ID生成器

【Spring Boot 3】【Redis】分布式唯一ID生成器 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总…

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…

【Java】小白友好的面向对象编程学习笔记

目录 OOP介绍 类和对象 方法参数 静态 包和import 构造方法 多态 访问权限 内部类 抽象 接口 枚举 匿名类 bean类 作用域 OOP介绍 Java 是一种面向对象的编程语言&#xff0c;面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称 OOP&#x…

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

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

R语言【cli】——ansi_html():将ANSI格式文本转换为HTML

Package cli version 3.6.0 Usage ansi_html(x, escape_reserved TRUE, csi c("drop", "keep")) Arguments 参数【x】&#xff1a;输入字符向量。 参数【escape_reserved】&#xff1a;是否转义HTML中保留的字符(&、<和>)。 参数【csi】&a…