云南网站建设的价值seo牛人
文章首发于我的个人博客:欢迎大佬们来逛逛
文章目录
- 抽象类: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
常用操作:
- 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"<<checked;});
}
QToolButton
工具按钮,用于显示菜单上的小工具等。
构造函数:
QToolButton(QWidget *parent = nullptr)
同样继承自抽象按钮类:QAbstractButton
常用操作:
- 具有上面的QPushButton介绍的所有常用操作。
- setToolButtonStyle:设置图标后指定文字和图片的位置,来自Qt::ToolButtonStyle
- setAutoRaise:设置按钮的点击动态效果
- 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()<<check;});connect(btn1,&QCheckBox::stateChanged,this,[](int state){qInfo()<<Qt::CheckState(state); });}
QButtonGroup
按钮管理类,可以将所有的按钮放入此类中进行统一管理 它具有每一个按钮的id,以便能够根据id管理每一个按钮。
构造函数:
QButtonGroup::QButtonGroup(QObject *parent = nullptr)
继承自:QObject
常用操作:
- buttons:获取该组中的所有按钮,返回的是一个QList
- id:获得编号为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<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); //设置不排斥
}