当前位置: 首页 > news >正文

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(); //truebtnYourLove->setExclusive(false); //设置不排斥
}
http://www.lryc.cn/news/93391.html

相关文章:

  • chatgpt赋能python:Python如何截图运行结果
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK使用JPEG图像压缩功能(C#)
  • RT-Thread FAL组件
  • 【git切换分支/tag】git stash保存暂不提交的更改
  • 【爬虫】4.5 实践项目——爬取当当网站图书数据
  • Socket 编程:基础概念辨析
  • git lfs下载指定文件git lfs pull --include=“*.bin“
  • JavaScript 数组 函数
  • 【哈佛积极心理学笔记】第7讲 逆境还是机遇
  • java springboot整合MyBatis做数据库查询操作
  • 11 二阶矩方法和Lovasz局部引理
  • 低代码赛道拥挤 生态聚合成为破局关键
  • B+树:高效存储与索引的完美结合
  • 左右排版的PDF,如何转换为单栏排版的word?
  • D349周赛:注意题目提示里,数据范围隐含的算法复杂度提示
  • iOS -- block one
  • 第十二篇:强化学习SARSA算法
  • 电力vr智能巡检模拟实操教学灵活性高成本低
  • vscode右键点击,松开后自动触发鼠标所在位置的按钮(误触发双击效果)
  • 【UE5】分分钟简单使用像素流云服务(Pixel Streaming)
  • 2021 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题
  • 【算法】【算法杂谈】两个排序数组中找第k小的数
  • ABAP 新语法--Open SQL(草稿)
  • 2023最新常用开发网站汇总
  • ELK 日志采集使用
  • 深入剖析RocketMQ源码:消息传递的奥秘
  • Protocol https not supported or disabled in libcurl
  • 一步步搭建基于 ts + express + prisma + mongodb + zod 后端服务
  • 深入理解深度学习——Transformer:编码器(Encoder)部分
  • 【图像处理】基于收缩系数的粒子群优化和引力搜索算法的多级图像阈值研究【CPSOGSA】(Matlab代码实现)