header detail 1
header detail 2
世界杯热身赛_世界杯赛程 - toption-intl.com
世界杯热身赛_世界杯赛程 - toption-intl.com

QT学习07:五种按钮控件

Home 2025-07-11 16:19:34 QT学习07:五种按钮控件
世界杯第一场比赛

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

文章目录

抽象类:QAbstractButtonQPushButtonQToolButtonQCommandLinkButtonQRadioButtonQCheckBoxQButtonGroup

抽象类: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

常用操作:

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

示例:

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"<

}

QToolButton

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

构造函数:

QToolButton(QWidget *parent = nullptr)

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

常用操作:

具有上面的QPushButton介绍的所有常用操作。setToolButtonStyle:设置图标后指定文字和图片的位置,来自Qt::ToolButtonStylesetAutoRaise:设置按钮的点击动态效果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

常用操作:

具有父类的所有操作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

常用操作:

参见上面的QPushButton。

示例:

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:部分选中

特别操作:

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()<

connect(btn1,&QCheckBox::stateChanged,this,[](int state){

qInfo()<

});}

QButtonGroup

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

构造函数:

QButtonGroup::QButtonGroup(QObject *parent = nullptr)

继承自:QObject

常用操作:

buttons:获取该组中的所有按钮,返回的是一个QListid:获得编号为id的按钮setId:设置按钮编号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

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

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

btnYourLove->button(i)->move(300,i*35);

}

//多选按钮默认是排斥的

qInfo()<exclusive(); //true

btnYourLove->setExclusive(false); //设置不排斥

}

Post navigation

  • Prev Post 什么是光猫?光猫工作原理介绍
Copyright © 2088 世界杯热身赛_世界杯赛程 - toption-intl.com All Rights Reserved.
友情链接