QT学习07:五种按钮控件

这篇具有很好参考价值的文章主要介绍了QT学习07:五种按钮控件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章首发于我的个人博客:欢迎大佬们来逛逛
完整Qt学习项目地址:源码地址

抽象类:QAbstractButton

是所有按钮类的祖先。QT学习07:五种按钮控件

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

常用操作:文章来源地址https://www.toymoban.com/news/detail-486161.html

  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

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

QT学习07:五种按钮控件

构造函数:

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

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

QT学习07:五种按钮控件

构造函数:

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

单选框按钮

QT学习07:五种按钮控件

构造函数:

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

复选框,用于多选

QT学习07:五种按钮控件

构造函数:

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

QT学习07:五种按钮控件

构造函数:

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); //设置不排斥
}

到了这里,关于QT学习07:五种按钮控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT中怎么使用QPalette设置按钮控件背景色

    💂 个人主页:pp不会算法 v 🤟 版权: 本文由【pp不会算法 v 】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 关于以上代码:并没有实现设置按钮控件的背景色 但是参照QT的帮助文档: 照上面这么讲确实应该可

    2024年02月11日
    浏览(48)
  • Qt 不规则窗口,不规则按钮,不规划控件 不规则界面

    类似: Qt 实现 不规则样式设置,不是视觉欺骗,是真正的不规则 ,点击外面不会触发按钮的点击信号. 效果: 显示成一张图片中的图形,使用带有透明区域的png图片; 这里注意:  必须重新绘制,构造函数也一定要调用resize。 见视频,可见,点击到空白处,消失;可见实

    2024年02月09日
    浏览(56)
  • 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

    往期回顾: 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 鼠标悬浮弹出对话框的功能:最终要实现纯代码设计出一个音量按钮,当鼠标悬浮

    2024年04月23日
    浏览(41)
  • Android Studio 学习记录-按钮控件(Button)

    目录 按钮控件(Button)         textAllCaps属性         onClick属性 点击事件和长按事件 禁用与恢复按钮         本文介绍按键控件的常见用法,包括:如何设置大小写属性,如何响应按钮的点击事件和长按事件,如何禁用按钮又该如何启用按钮,等等。        

    2023年04月22日
    浏览(50)
  • Android学习之路(4) UI控件之Button (按钮)与 ImageButton (图像按钮)

    本节引言: 今天给大家介绍的Android基本控件中的两个按钮控件,Button普通按钮和ImageButton图像按钮; 其实ImageButton和Button的用法基本类似,至于与图片相关的则和后面ImageView相同,所以本节 只对Button进行讲解,另外Button是TextView的子类,所以TextView上很多属性也可以应用到

    2024年02月12日
    浏览(47)
  • Android学习之路(5) UI控件之Button (按钮)与 ImageButton (图像按钮)

    本节引言: 今天给大家介绍的Android基本控件中的两个按钮控件,Button普通按钮和ImageButton图像按钮; 其实ImageButton和Button的用法基本类似,至于与图片相关的则和后面ImageView相同,所以本节 只对Button进行讲解,另外Button是TextView的子类,所以TextView上很多属性也可以应用到

    2024年02月12日
    浏览(45)
  • Qt控件学习

    目录 QPushButton  QToolButton QRadioButton QCheckBox   他是高配版QPushButton 添加如下代码: QRadioButton 是 Qt 提供的单选按钮, 如果单选按钮被选中, 再次点击这个按钮选中状态是不能被取消的。且一组只能选一个, 它的父类是 QAbstractButton。 用容器去吧这一组一组的按钮区分开来,容

    2024年02月16日
    浏览(36)
  • 【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

    博客主页:Duck Bro 博客主页 系列专栏:Qt 专栏 关注博主,后期持续更新系列文章 如果有错误感谢请大家批评指出,及时修改 感谢大家点赞👍收藏⭐评论✍ 文章编号:Qt 学习笔记 / 29 1. 简介 QTextEdit是Qt中的一个可编辑的文本框控件,可以用于显示和编辑多行文本。 它是基于

    2024年04月28日
    浏览(48)
  • 介绍我的mac上的五种GPT使用方式

    数了一下,现在我的mac上已经有5种可以使用GPT对话的工具了。 - openai官网 - new bing官网 - chat mac桌面 - app goland gpt插件 - 控制台工具 openai的官网就是最正常的入口,就是正常的登录访问。 new bing是微软推出的,虽然听说有的人很难排队,但是昨天我用日本的vpn排队基本秒过。

    2023年04月08日
    浏览(39)
  • QT学习笔记:调整控件大小和位置

    前面的文章,我讲了怎么用layout去布局。但布局做完后,发现界面有点怪。比如,最低下的“清除”按钮这么大,“消息体”这个label没有位于中间等。下面,我就来讲下怎么把界面继续优化。 1、调整“清除”按钮大小和位置 (1)在“sizePolicy”中,选择Fixed。 (2)把左边

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包