QT学习 控件(一):按钮类

news2024/10/6 18:22:40

文章目录

  • Qt控件:按钮
    • QPushButton
    • QToolButton
    • QCommandLinkButton
    • QRadioButton
    • QCheckBox
    • QButtonGroup

Qt控件:按钮

在这里插入图片描述


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)

常用操作:

序号函数&描述
1int void setAutoDefault(bool)
设为自动默认按钮,按下Enter键时会自动按下按钮
2void setDefault(bool)
doc设为自动默认按钮,按下Enter键时会自动按下按钮
3void setFlat(bool)
去掉按钮的边框,让PushButton按钮跟背景色融为一体,在点击按钮时,会出现原来按钮背景。
4void setMenu(QMenu *menu)
设置菜单。 这将把按钮变成一个菜单按钮,在某些样式中,它将在按钮文本的右侧产生一个小三角形。

示例:

void Widget::testPushButton()
{
    //创建一个按钮
    auto btn1=new QPushButton(style()->standardPixmap(QStyle::StandardPixmap::SP_DialogCancelButton),
                              "按钮1",this);

    auto menu1=new QMenu(this);
    menu1->addAction("睡觉");
    menu1->addAction("吃饭");
    menu1->addAction("打游戏");

    //给按钮绑定菜单
    //btn1->setMenu(menu1);
    //btn1->showMenu();


    //设置按钮的扁平化(透明,点击出现)
    //btn1->setFlat(true);

    //设置按钮可以选中
    btn1->setCheckable(true);

    //信号
    connect(btn1,&QPushButton::pressed,this,[]()
    {
        qInfo()<<"pressed";
    });
    connect(btn1,&QPushButton::released,this,[]()
    {
        qInfo()<<"released";
    });
    connect(btn1,&QPushButton::clicked,this,[](bool check)
    {
        qInfo()<<"clicked"<<check;
    });
    connect(btn1,&QPushButton::toggled,this,[](bool check)
    {
        qInfo()<<"toggled"<<check;
    });
}

QToolButton

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

构造函数:

注意:只能一种构造函数的形式,指定父对象

QToolButton(QWidget *parent = nullptr)

示例:

void Widget::testToolButton()
{
    auto tbtn=new QToolButton(this);
    tbtn->setText("工具");
    //设置图标
    tbtn->setIcon(QIcon("loginIcon.png"));
    //设置图标尺寸
    tbtn->setIconSize(QSize(200,200));
    //按钮的风格设置:文字是否显示
    tbtn->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonFollowStyle);
    //设置箭头
    tbtn->setArrowType(Qt::ArrowType::NoArrow);

    auto menu1=new QMenu(this);
    menu1->addAction("睡觉");
    menu1->addAction("吃饭");
    menu1->addAction("打游戏");

	//设置菜单
    tbtn->setMenu(menu1);
    //设置菜单弹出格式
    tbtn->setPopupMode(QToolButton::ToolButtonPopupMode::DelayedPopup);
    //设置自动提升(图片点击会具有动画效果)
    tbtn->setAutoRaise(true);

	//点击按钮,显示菜单
    connect(tbtn,&QToolButton::pressed,tbtn,&QToolButton::showMenu);
}

QCommandLinkButton

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

构造函数:
可以设置父对象,按钮文本,按钮的注释

QCommandLinkButton(const QString &text, const QString &description, QWidget *parent = nullptr)
QCommandLinkButton(const QString &text, QWidget *parent = nullptr)
QCommandLinkButton(QWidget *parent = nullptr)
void Widget::testCommandButton()
{
    auto cbtn=new QCommandLinkButton("按钮",this);
    cbtn->setText("Github");
    cbtn->setDescription("链接到github");

}

按钮的样式:
在这里插入图片描述

QRadioButton

单选框按钮

构造函数:
设置按钮的文本,父对象

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

单选框:每次在同一组中只能选择一个。

示例:

void Widget::testRadioButton()
{
    auto btn1=new QRadioButton("男",this);
    auto btn2=new QRadioButton("女",this);

	
    btn2->move(0,35);
    btn1->setIcon(QIcon("loginIcon.png"));
}

在这里插入图片描述

QCheckBox

复选框,用于多选

构造函数:

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

复选框具有以下三种状态:

Qt::check
Qt::Uncheck
Qt::PartiallyChecked

信号:

 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管理每一个按钮。

继承自:QObject

构造函数:

QButtonGroup::QButtonGroup(QObject *parent = nullptr)

信号:
顾名思义

 void buttonClicked(QAbstractButton *button)
 void buttonPressed(QAbstractButton *button) 
 void buttonReleased(QAbstractButton *button)
 void buttonToggled(QAbstractButton *button, bool checked)
 void idClicked(int id)
 void idPressed(int id)
 void idReleased(int id)
 void idToggled(int id, bool checked):根据状态与id,选择指定的单个按钮对象

常用功能:

addButton() 添加按钮对象
button(id) 根据id获得按钮对象
void Widget::testButtonGroup()
{
    //选择性别
    auto btnSexGroup=new QButtonGroup(this);
    btnSexGroup->addButton(new QRadioButton("男",this),1);
    btnSexGroup->addButton(new QRadioButton("女",this),2);
    btnSexGroup->addButton(new QRadioButton("外星人",this),3);
    btnSexGroup->addButton(new QRadioButton("ikun",this),4);
    for (int i=1;i<=4;i++)
    {
        auto btn=btnSexGroup->button(i);
        btn->move(0,i*35);
    }

    //选择收入组
    auto btnIncomeGroup=new QButtonGroup(this);
    btnIncomeGroup->addButton(new QRadioButton("1W以上",this),1);
    btnIncomeGroup->addButton(new QRadioButton("5k-1W之间",this),2);
    btnIncomeGroup->addButton(new QRadioButton("2k-5k之间",this),3);
    btnIncomeGroup->addButton(new QRadioButton("2k以下",this),4);
    for (int i=1;i<=4;i++)
    {
        auto btn=btnIncomeGroup->button(i);
        btn->move(200,i*35);
    }

    //选择是否有女朋友
    auto GrilFriendGroup=new QButtonGroup(this);
    GrilFriendGroup->addButton(new QCheckBox("123",this),1);
    GrilFriendGroup->addButton(new QCheckBox("456",this),2);
    GrilFriendGroup->addButton(new QCheckBox("789",this),3);
    GrilFriendGroup->addButton(new QCheckBox("1012",this),4);
    for (int i=1;i<=4;i++)
    {
        auto btn=GrilFriendGroup->button(i);
        btn->move(300,i*35);
    }
    //设置多选框不是互斥状态
    GrilFriendGroup->setExclusive(false);
    qInfo()<<GrilFriendGroup->exclusive();

    connect(GrilFriendGroup,&QButtonGroup::idToggled,this,[=](int id,bool check)
    {
        if (!check)
        {
            return;
        }
        switch (id) {
        case 1:
            qInfo()<<GrilFriendGroup->button(id)->text();
            break;
        case 2:
            qInfo()<<GrilFriendGroup->button(id)->text();
            break;
        case 3:
            qInfo()<<GrilFriendGroup->button(id)->text();
            break;
        case 4:
            qInfo()<<GrilFriendGroup->button(id)->text();
            break;
        default:
            break;
        }
    });
}

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

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

相关文章

嵌入式C语言面向对象编程 --- 继承

上一篇文章主要讲述了 C 语言面向对象编程 – 封装的简单概念和实现,本篇文章继续来讨论一下,如何使用 C 语言实现面向对象编程的另一个重要特性:继承。 继承就是基于一个已有的类(一般称作父类或基类),再去重新声明或创建一个新的类,这个类可以称为子类或派生类。子类…

ES文件浏览器 如何提取盒子已安装(内置)软件APK 教程

ES文件浏览器( ES File Explorer)是一款功能强大免费的本地和网络文件管理器。 主要功能&#xff1a;文件管理&#xff1a;多种视图列表和排序方式&#xff0c;查看并打开各类文件&#xff0c;在本地SD卡、局域网、OTG设备之间任意传输文件。多选、复制、粘帖、剪贴板、查看属性…

海豚dolphinscheduler 通过shell 调用.sql文件 传参

1. 准备sql文件 1.1 资源中心--创建文件 1.2 文件格式选择 sql, 文件内容 填要执行的sql内容 1.3 点击创建保存 2.shell调用.sql文件 2.1 拖拽一个shell 节点 2.2 编辑shell节点 hive -e&#xff1a;后面跟hivesql字符串 例如&#xff1a;hive -e "select * from studen…

【十天成为红帽工程师】第七天 Ansible的模块使用

目录 一、ansible的配置文件和清单文件 二、ansible的模块 三、实际操作命令 一、ansible的配置文件和清单文件 &#xff08;一&#xff09;看ansible的配置文件 1、命令&#xff1a;ansible --version 2、一般的配置文件是&#xff1a;/etc/ansible/ansible.cfg PS&am…

查看磁盘分区

在Window上查看磁盘分区&#xff0c;既可以使用diskpart list vol命令&#xff0c;也可以使用diskmgmt.msc命令&#xff0c;下面分别介绍这2种命令查看方式。 1、diskpart方式 按WinR --> 输入: cmd --> diskpart --> list vol&#xff0c;如下图所示: ## 按WinR, …

借助 Material Design,帮助您打造更好的无障碍应用 (中篇)

随着时代的发展&#xff0c;"无障碍体验" 对开发者的意义也愈发重大&#xff0c;在上一篇文章中&#xff0c;我们为您介绍了辅助技术&#xff0c;层次结构&#xff0c;颜色和对比度等内容。本文将进一步为您介绍无障碍布局和排版、文案等相关的内容。布局和排版Mater…

【Java面经】一次颇为进阶的面试记录

工作之余又参加了一次面试&#xff0c;对我来说比之前的面试难度都提了一个度&#xff0c;面试官从公司场景引申聊到高并发和Redis的很多问题。 可惜我太菜了回答不上来&#xff0c;只能回答基础的问题。面完就是凉凉的味道。。 Redis相关 Redis的String是怎么实现的&#xff…

盘点项目管理工具DHTMLX Gantt 的常见问题

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…

vue中集成省市区街四级地址组件

大家好&#xff0c;我是雄雄。 前言 省市区地址大家应该都不陌生吧&#xff0c;网上买个东西&#xff0c;得填地址。中午定个饭&#xff0c;得写地址&#xff1b;叫个货拉拉叫个跑腿&#xff0c;是不是也得写地址。 但是选择地址的时候&#xff0c;不同场景下选择的范围不同&…

【C分支与循环】详解分支与循环

分支与循环前言一、什么是语句&#xff1f;二、分支语句&#xff08;选择结构&#xff09;&#xff08;一&#xff09;概念&#xff08;二&#xff09;if语句1.概念2.例子&#xff08;1&#xff09;单分支&#xff08;2&#xff09;双分支&#xff08;3&#xff09;多分支&…

vulnhub DC系列 DC-1

目录 下载地址 漏洞分析 信息收集 漏洞尝试 漏洞利用 flag1 flag2 flag3 flag4 提权 下载地址 DC-1.zip (Size: 733 MB)Download: http://www.five86.com/downloads/DC-1.zipDownload (Mirror): https://download.vulnhub.com/dc/DC-1.zip使用方式:ova文件直接使用vm…

nacos安装与使用

nacos安装与使用nacos下载安装下载方式 一&#xff1a;下载方式 二&#xff1a;版本&#xff08;2.0.3&#xff09;nacos启动在项目中注册nacos服务nacos下载安装 下载方式 一&#xff1a; nacos官网下载 下载方式 二&#xff1a;版本&#xff08;2.0.3&#xff09; 链接&a…

【Flask框架】——28 Flask_SQLAlchemy

Flask-SQLAlchemy Flask-SQLAlchemy的使用对SQLAlchemy进行了封装和优化&#xff1a; Flask-SQLAlchemy是Flask框架的一个插件&#xff1b; Flask-SQLAlchemy是对SQLAlchemy进行了一个简单的封装的一个插件&#xff0c;使得我们在Flask中使用sqlalchemy更加的简单。 1.安装…

排查wx.previewImage真机预览一直loading问题

起因 使用van-uploader预览图片一直loading预览不了&#xff0c;开发者工具&#xff0c;浏览器都是秒开的。我看源码是使用wx.previewImage&#xff0c;自己写了个demo也是同样问题。 排查原因 链接是否拼接错误域名有没有添加进白名单防盗链referrer证书是否过期&#xff0…

企业数字化转型蓝图规划、生态体系建设、数字化管理平台建设方案

【版权声明】本资料来源网络&#xff0c;仅用于行业知识分享&#xff0c;供个人学习参考&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间进行删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 数字化助力上下…

SuperMap iServer在不同系统中设置开机自启动--Linux篇

目录前言一&#xff1a;CentOS系统二&#xff1a;Ubantu系统作者&#xff1a;kxj 前言 在成功部署SuperMap iServer之后&#xff0c;每次重启电脑都需要手动去启动iServer&#xff0c;如何能让iServer在每次重启电脑时都自动启动呢&#xff1f;今天咱们一起来看看在Linux系统中…

实地址方式下的可屏蔽中断服务程序设计

目录 实地址方式下的可屏蔽中断服务程序设计 程序装入方式 直接装入&#xff08;会这种方式就可以&#xff0c;考试都给你地址让你装&#xff09; 系统功能调用装入&#xff08;了解考纲没要求&#xff09; 中断屏蔽与中断结束的处理&#xff08;了解&#xff09; 会直接装…

Python基础(十九):函数加强

文章目录 函数加强 一、递归 1、递归的应用场景 2、应用&#xff1a;3以内数字累加和 二、lambda 表达式 1、lambda的应用场景 2、lambda语法 3、示例&#xff1a;计算a b 4、lambda的参数形式 5、lambda的应用 三、高阶函数 1、体验高阶函数 2、内置高阶函数 …

Grafana配置邮件

1.Grafana配置文件路径 默认的配置文件路径是&#xff1a;/etc/grafana/grfana.ini 2.默认情况下&#xff0c;邮件服务是关闭的 systemctl status grafana-server 可以查看到当前服务的配置文件在哪里 3.没有改动之前的配置文件 /etc/grafana/grfana.ini systemctl resta…

插件算法管理以及任务队列机制

插件算法管理以及任务队列机制插件管理抽象插件基类插件导入导出规范__attribute__((visibility("default")))插件实例插件管理者算法管理抽象算法基类算法Map与具体算法注册规范PetCoin算法实例算法管理者任务队列机制抽象任务具体任务任务管理者任务队列插件管理 …