QT学习07:五种按钮控件

文章首发于我的个人博客:欢迎大佬们来逛逛

文章目录

  • 抽象类:QAbstractButton
  • QPushButton
  • QToolButton
  • QCommandLinkButton
  • QRadioButton
  • QCheckBox
  • QButtonGroup

抽象类:QAbstractButton

是所有按钮类的祖先。请添加图片描述

QAbstractButton的信号

  • void clicked(bool checked = false) : 是否选中按钮
  • void pressed(): 点击按钮
  • void released(): 释放按钮
  • void toggled(bool checked): 检测是否被选中

QPushButton

最常用的按钮控件之一。

构造函数:

设置图标,文本信息,父窗口

QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(QWidget *parent = nullptr)

它继承自抽象按钮类:QAbstractButton

常用操作:

  1. setCheckable:设置按钮被选中(默认不会被选中),如果被选中则会触发 toggled 信号,但是不会触发**clicked**,它只有在点击时才会触发。
  2. setFlat:设置按钮扁平化
  3. setMenu:为按钮添加菜单
  4. setIconsetShortcutsetText:设置图片,快捷键,文本等

示例:

void Widget::testPushButton()
{
    auto btn=new QPushButton(style()->standardPixmap(QStyle::SP_DialogCloseButton),"干我",this);

    auto menu=new QMenu(this);
    menu->addMenu("唱跳");
    menu->addMenu("RAP");
    menu->addMenu("篮球");

    //添加按钮菜单
    //btn->setMenu(menu);

    //设置按钮扁平化
    btn->setFlat(true);

    //设置能被选中
    btn->setCheckable(true);

    //检测是否被选中
    connect(btn,&QPushButton::toggled,this,[=](bool checked){qInfo()<<"toggled"<<checked;});
}

QToolButton

工具按钮,用于显示菜单上的小工具等。

请添加图片描述

构造函数:

QToolButton(QWidget *parent = nullptr)

同样继承自抽象按钮类:QAbstractButton

常用操作:

  1. 具有上面的QPushButton介绍的所有常用操作。
  2. setToolButtonStyle:设置图标后指定文字和图片的位置,来自Qt::ToolButtonStyle
  3. setAutoRaise:设置按钮的点击动态效果
  4. setArrowType:设置此按钮为箭头而不是图标

示例:

void Widget::testToolButton()
{
    auto btn=new QToolButton(this);
    btn->setText("ToolButton");
    btn->setIcon(style()->standardPixmap(QStyle::SP_ComputerIcon));
    //设置文字与图标显示位置
    btn->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonTextUnderIcon);

    //btn->setArrowType(Qt::ArrowType::RightArrow); //展现为箭头
    auto menu=new QMenu(this);
    menu->addMenu("唱跳");
    menu->addMenu("RAP");
    menu->addMenu("篮球");
    btn->setMenu(menu);

    //设置按钮菜单弹出模式
    btn->setPopupMode(QToolButton::ToolButtonPopupMode::MenuButtonPopup);
    //设置按钮点击动态效果
    btn->setAutoRaise(true);

}

QCommandLinkButton

此按钮用于命令行链接(进入某链接的按钮

请添加图片描述

构造函数:

QCommandLinkButton(const QString &text, const QString &description, QWidget *parent = nullptr)
QCommandLinkButton(const QString &text, QWidget *parent = nullptr)
QCommandLinkButton(QWidget *parent = nullptr)

它继承自:QPushButton

常用操作:

  1. 具有父类的所有操作
  2. setDescription:专属的操作,可以设置描述文本
void Widget::testCommandLinkButton()
{
    auto btn=new QCommandLinkButton("Github",this);
    btn->setDescription("点击跳转到Github");
    connect(btn,&QCommandLinkButton::clicked,this,[](){
        qInfo()<<"正在打开!";
    });
}

QRadioButton

单选框按钮

请添加图片描述

构造函数:

QRadioButton(const QString &text, QWidget *parent = nullptr) 
QRadioButton(QWidget *parent = nullptr)

同样继承自:QAbstractButton

常用操作:

  1. 参见上面的QPushButton。

示例:

void Widget::testRadioButton(){
    auto btn1=new QRadioButton("男",this);
    auto btn2=new QRadioButton("女",this);
    btn2->move(0,35); 
    btn1->setIcon(QIcon("loginIcon.png"));
}

QCheckBox

复选框,用于多选

https://img-blog.csdnimg.cn/0f77f7dc84c8450e9eb90492d74c2c3e.png

构造函数:

QCheckBox(const QString &text, QWidget *parent = nullptr)
QCheckBox(QWidget *parent = nullptr)

复选框具有以下三种状态:(三态模式)

  1. Qt::check: 选中
  2. Qt::Uncheck:未选中
  3. Qt::PartiallyChecked:部分选中

特别操作:

  1. setExclusive:设置为不排斥状态,即可以多选,因为这个QCheckBox默认是排斥的,需要手动设置以下。

信号:

 void stateChanged(int state):当复选框的状态发生改变
void Widget::testcheckButton(){
    auto btn1=new QCheckBox("打篮球",this);
    auto btn2=new QCheckBox("唱",this);
    auto btn3=new QCheckBox("跳",this);
    btn2->move(0,35);
    btn3->move(0,70);
    btn1->setIcon(QIcon("loginIcon.png"));
    //设置三态    
		btn1->setTristate(true); 
    connect(btn1,&QCheckBox::toggled,this,[=](bool check){qInfo()<<check;});
    connect(btn1,&QCheckBox::stateChanged,this,[](int state){
				qInfo()<<Qt::CheckState(state);    
		});}

QButtonGroup

按钮管理类,可以将所有的按钮放入此类中进行统一管理 它具有每一个按钮的id,以便能够根据id管理每一个按钮。

请添加图片描述

构造函数:

QButtonGroup::QButtonGroup(QObject *parent = nullptr)

继承自:QObject

常用操作:

  1. buttons:获取该组中的所有按钮,返回的是一个QList
  2. id:获得编号为id的按钮
  3. setId:设置按钮编号
  4. addButton:添加按钮并且设置它在该组中编号
void Widget::testButtonGroup()
{
    auto btnSexGroup=new QButtonGroup(this);
    //性别组
    btnSexGroup->addButton(new QRadioButton("男",this),0);
    btnSexGroup->addButton(new QRadioButton("女",this),1);
    btnSexGroup->addButton(new QRadioButton("人妖",this),2);
    btnSexGroup->addButton(new QRadioButton("日本人",this),3);
    auto sexLists=btnSexGroup->buttons(); //获取按钮的所有按钮
    for (int i=0;i<sexLists.size();i++){
        btnSexGroup->button(i)->move(0,i*35);
    }

    //收入组
    auto btnIncomeGroup=new QButtonGroup(this);
    btnIncomeGroup->addButton(new QRadioButton("5k-1w",this),0);
    btnIncomeGroup->addButton(new QRadioButton("1w-2w",this),1);
    btnIncomeGroup->addButton(new QRadioButton("2w-5w",this),2);
    btnIncomeGroup->addButton(new QRadioButton("5w-10w",this),3);
    auto incomeLists=btnSexGroup->buttons(); //获取按钮的所有按钮
    for (int i=0;i<incomeLists.size();i++){
        btnIncomeGroup->button(i)->move(150,i*35);
    }

    //你喜欢的偶像
    auto btnYourLove=new QButtonGroup(this);
    btnYourLove->addButton(new QCheckBox("蔡徐坤",this),0);
    btnYourLove->addButton(new QCheckBox("陈立农",this),1);
    btnYourLove->addButton(new QCheckBox("范丞丞",this),2);
    btnYourLove->addButton(new QCheckBox("王源",this),3);
    btnYourLove->addButton(new QCheckBox("易烊千玺",this),4);
    auto loveLists=btnYourLove->buttons(); //获取按钮的所有按钮
    for (int i=0;i<loveLists.size();i++){
        btnYourLove->button(i)->move(300,i*35);
    }
    //多选按钮默认是排斥的
    qInfo()<<btnYourLove->exclusive(); //true
    btnYourLove->setExclusive(false); //设置不排斥
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解CSS字符转义行为

深入理解CSS字符转义行为 深入理解CSS字符转义行为 前言为什么要转义&#xff1f;CSS 转义什么是合法css的表达式 左半部分右半部分 练习参考链接 前言 在日常的开发中&#xff0c;我们经常写css。比如常见的按钮: <button class"btn"></button>&am…

【MySQL】 IS NOT NULL 和 != NULL 的区别?

背景 最近在开发小伙伴的需求&#xff0c;遇到了一个数据库统计的问题&#xff0c; is not null 结果正确 &#xff01;null 结果就不对&#xff0c;然后就激发了获取真理的想法&#xff0c;那必须的查查 咋回事嘞&#xff1f; 开整 在用MySQL的过程中&#xff0c;你是否存…

大学物理(上)-期末知识点结合习题复习(4)——质点运动学-动能定理 力做功 保守力与非保守力 势能 机械能守恒定律 完全弹性碰撞

目录 1.力做功 恒力作用下的功 变力的功 2.动能定理 3.保守力与非保守力 4.势能 引力的功与弹力的功 引力势能与弹性势能 5.保守力做功与势能的关系 6.机械能守恒定律 7.完全弹性碰撞 题1 题目描述 题解 题2 题目描述 题解 1.力做功 物体在力作用下移动做功…

AWS CodeWhisperer 简单介绍

一、何为AWS CodeWhisperer Amazon CodeWhisperer能够理解以自然语言&#xff08;英语&#xff09;编写的注释&#xff0c;并能实时生成多条代码建议&#xff0c; 以此提高开发人员生产力。 二、主要功能 Amazon CodeWhisperer 的主要功能&#xff0c;包括代码生成、引用追踪…

36.SpringBoot实用篇—运维

目录 一、实用篇—运维。 &#xff08;1&#xff09;程序打包与运行&#xff08;Windows版&#xff09;。 &#xff08;2&#xff09;spring-boot-maven-plugin插件作用。 &#xff08;3&#xff09;程序打包与运行&#xff08;Linux版&#xff09;。 &#xff08;4&#…

chatgpt赋能python:Python中如何处理多个输入

Python中如何处理多个输入 在编写Python程序时&#xff0c;我们经常需要从用户那里获取多个输入来执行某些操作。本文将介绍Python中的各种方法来处理多个输入。 从终端获取多个输入 Python中最简单的方式是从终端获取多个输入。下面是一个基本的例子&#xff1a; input_st…

SpringSecurity实现前后端分离登录token认证详解

目录 1. SpringSecurity概述 1.1 权限框架 1.1.1 Apache Shiro 1.1.2 SpringSecurity 1.1.3 权限框架的选择 1.2 授权和认证 1.3 SpringSecurity的功能 2.SpringSecurity 实战 2.1 引入SpringSecurity 2.2 认证 2.2.1 登录校验流程 2.2.2 SpringSecurity完整流程 2.2.…

Splashtop 与 Pax8 合作为 MSP 提供简化的远程支持解决方案

2023年4月27日 科罗拉多州丹佛 Pax8 是一个行业领先的云商务市场&#xff0c;该公司今天宣布将通过 Pax8 市场在全球推出其全新运营供应商 Splashtop。Splashtop 的远程访问、支持以及端点监控和管理解决方案极具成本效益&#xff0c;而且功能强大&#xff0c;可以助力托管服务…

002、体系结构之TiDB Server

TiDB Server 1、TiDB总览1.1、TiDB Server架构1.2、TiDB Server 主要功能&#xff1a; 2、SQL语句处理语句的解析和编译SQL层协议层上下文解析层逻辑优化器物理优化器本地执行器分布式执行器 3、如何将表的数据转成kv形式4、在线DDL相关模块5、GC机制与相关模块6、TiDB Server …

你真的会写软件测试简历吗?为什么面试约不到,测试老鸟的建议...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 写好一份简历的三…

Frida技术—逆向开发的屠龙刀

简介 Frida是一种基于JavaScript的动态分析工具&#xff0c;可以用于逆向开发、应用程序的安全测试、反欺诈技术等领域。Frida主要用于在已安装的应用程序上运行自己的JavaScript代码&#xff0c;从而进行动态分析、调试、修改等操作&#xff0c;能够绕过应用程序的安全措施&a…

mac下部署和访问 Kubernetes 仪表板(Dashboard)

简介 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中&#xff0c;也可以对容器应用排错&#xff0c;还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息&#xff0c;也可以创建或者修改 Kub…

QT--配置Opencv

提示&#xff1a;本文为学习记录&#xff0c;若有疑问&#xff0c;请及时联系作者。 文章目录 前言一、下载已编译的opencv1..解压2..path路径 二、使用步骤1..pro文件2..h文件 总结 前言 只做第一个我&#xff0c;不做第二个谁。 一、下载已编译的opencv 适用于mingw编译器…

NoSQL数据库

NoSQL数据库 NoSQL简介NoSQL兴起的原因NoSQL与关系数据库的对比NoSQL的四大类型键值数据库列族数据库文档数据库图形数据库不同类型数据库比较分析RedisMongoDBCassandraNeo4j NoSQL三大基石CAPBASE最终一致性 NoSQL简介 “Not Only SQL”泛指非关系型的数据库&#xff0c;区别…

07_scrapy的应用——获取电影数据(通过excel保存静态页面scrapy爬虫数据的模板/通过数据库保存)

0、前言: 一般我们自己创建的一些python项目,我们都需要创建虚拟环境,其中会下载很多包,也叫做依赖。但是我们在给他人分享我们的项目时,不能把虚拟环境打包发送给别人,因为每个人电脑系统不同,我们可以把依赖导出为依赖清单,然后别人有了我们的依赖清单,就可以用一条…

项目使用tensorflow2会出错,下载并使用tensorflow1

背景&#xff1a;使用pycharm安装总显示安装失败&#xff0c;使用pip安装也不行&#xff0c;只能使用conda配置虚拟环境手动安装 1、下载安装anaconda 官网下载&#xff0c;双击安装。用anaconda就是想使用虚拟环境&#xff0c;万一没弄好直接删了重新搞就行。 2、创建虚拟环境…

Https加密超文本传输协议的运用

1.https的相关知识 1.1 https的简介 HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加…

使用POI实现JAVA操作Excel

Apache POI POI提供API给JAVA程序对Microsoft Office格式档案读和写的功能 POI工具介绍 POI 是用Java编写的免费开源的跨平台的 Java API&#xff0c;Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。主要是运用其中读取和输出excel的功能。 POI官网地…

常用设计模式(三)

接着之前的思路今天来介绍一下常用的设计模式有哪些 单例模式&#xff08;Singleton Pattern&#xff09; 又称为单体模式&#xff0c;保证一个类只有一个实例&#xff0c;并提供一个访问它的全局访问点。也就是说&#xff0c;第二次使用同一个类创建新对象的时候&#xff0c…

es相关的知识点

海量数据下如何提升es的操作性能 .filesystemcache os cache操作系统缓存 es中的数据,实际上写入磁盘,磁盘文件的操作系统,实际上会将数据写入到oscache中 es的搜索引擎严重依赖于底层的filesystemcache 如果filesystemcache的内存足够大,可以容纳所有的index segmentfile索引…