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

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

Qt控件:按钮

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)

常用操作:

序号 函数&描述
1 int void setAutoDefault(bool)
设为自动默认按钮,按下Enter键时会自动按下按钮
2 void setDefault(bool)
doc设为自动默认按钮,按下Enter键时会自动按下按钮
3 void setFlat(bool)
去掉按钮的边框,让PushButton按钮跟背景色融为一体,在点击按钮时,会出现原来按钮背景。
4 void 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");

}

按钮的样式:
QT学习 控件(一):五种按钮类

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"));
}

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

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);
    });
}

样例:
QT学习 控件(一):五种按钮类


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,选择指定的单个按钮对象

常用功能:文章来源地址https://www.toymoban.com/news/detail-430558.html

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;
        }
    });
}

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

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月12日
    浏览(45)
  • C++ Qt 学习(二):常用控件使用与界面布局

    ui 设计器设计界面很方便,为什么还要手写代码? 更好的控制布局 更好的设置 qss 代码复用 完全不会写 Qt 布局,很麻烦,怎么学会手写布局? 看 Qt 自己怎么写 改良 Qt 的布局写法 1.1 水平布局 addWidget() 在布局里添加一个控件 addLayout() 在布局里添加子布局 setMargin() 设置水平

    2024年02月06日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包