1、QCheckBox
为复选框
2、QRadioButton
为单选框
代码
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QCheckBox>
#include <QRadioButton>
#include <QMenu>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//设置图标
ui->toolButton->setIcon(QIcon("../timg.jpg"));//加载图标
ui->toolButton->setIconSize(QSize(120,120));//设置图标大小 宽度像素x高度像素
//复选框
QMenu *menu=new QMenu(this);
menu->addAction(QIcon("../timg2.jpg"),"树0",this,SLOT(doProcess()));
menu->addAction(QIcon("../timg3.jpg"),"树1",this,"");
menu->addAction(QIcon("../timg2.jpg"),"树2",this,"");
menu->addAction(QIcon("../timg2.jpg"),"树3",this,"");
menu->addAction(QIcon("../timg2.jpg"),"树4",this,"");
menu->addAction(QIcon("../timg2.jpg"),"树5",this,"");
menu->addAction(QIcon("../timg2.jpg"),"树6",this,"");
ui->toolButton->setMenu(menu);
//绑定信号与槽 checkbox复选框
connect(ui->checkBox1,SIGNAL(clicked(bool)),this,SLOT(doProcessCheckBox()));
connect(ui->checkBox2,SIGNAL(clicked(bool)),this,SLOT(doProcessCheckBox()));
connect(ui->checkBox3,SIGNAL(clicked(bool)),this,SLOT(doProcessCheckBox()));
//绑定信号与槽 radioButton
connect(ui->radioButton1,SIGNAL(clicked(bool)),this,SLOT(doProcessRadioButton()));
connect(ui->radioButton2,SIGNAL(clicked(bool)),this,SLOT(doProcessRadioButton()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::doProcess(){
qDebug()<<"222"<<endl;
}
void Widget::doProcessCheckBox(){
QCheckBox *cbox=(QCheckBox*)this->sender();
if(cbox->isChecked()){//当选中打印内容
qDebug()<<cbox->text()<<endl;
}
}
void Widget::doProcessRadioButton(){
QRadioButton *rbtn=(QRadioButton*)this->sender();
if(rbtn->isChecked()){
qDebug()<<rbtn->text()<<endl;//当选中打印内容
}
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
private slots:
void doProcess();
void doProcessCheckBox();
void doProcessRadioButton();
};
#endif // WIDGET_H