QT基础:QButtonGroup 按钮组的简单演示
QButtonGroup 是一个按钮组,就是将控件进行组合或分组的一个容器,但是它并不在设计师里面可以直接拉出来用在使用 QButtonGroup 的时候需要引入一下。在选中或者取消选中任意一个选择框的时候,都能触发一次按钮组的 buttonClicked 和 buttonToggled 信号,选中一个选择框的时候,可以触发按钮组的 buttonClicked 和 buttonToggled 信号
QButtonGroup 是一个按钮组,就是将控件进行组合或分组的一个容器,但是它并不在设计师里面可以直接拉出来用
在使用 QButtonGroup 的时候需要引入一下 #include <QButtonGroup>
1、首先用QT创建一个 widget 项目 ,在 UI 中添加三个选择框
在.pro文件中加入一行 CONFIG += console 可以在运行的时候自动打开控制台
2、在 widget.cpp 中写入代码
这里创建了两个槽函数,分别绑定 QButtonGroup 中的 buttonClicked 信号和 buttonToggled 信号
#include "widget.h"
#include "ui_widget.h"
#include <QButtonGroup>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QButtonGroup *group = new QButtonGroup(this);
// 将UI中创建好的选择框全部加入按钮组
group->addButton(ui->checkBox1);
group->addButton(ui->checkBox2);
group->addButton(ui->checkBox3);
// 选择框加入按钮组以后会默认变成单选 ,在这里可以改成多选
group->setExclusive(false);
// 链接创建好的槽函数
QObject::connect(group,SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(Click(QAbstractButton*)));
QObject::connect(group,SIGNAL(buttonToggled(QAbstractButton*,bool)),this,SLOT(Toggl(QAbstractButton*,bool)));
}
void Widget::Click(QAbstractButton * but)
{
// 打印按钮组中被点击的选择框
qDebug() << "按钮组被点击:" << but << but->isChecked();
}
void Widget::Toggl(QAbstractButton * but, bool check)
{
// 打印按钮组中被触发的选择框
qDebug() << "按钮组被触发:" << but << check;
}
Widget::~Widget()
{
delete ui;
}
3、在选择框是多选的情况下的演示效果:
可以看到,在选中或者取消选中任意一个选择框的时候,都能触发一次 按钮组的 buttonClicked 和 buttonToggled 信号
4、// group->setExclusive(false); 把这行注释掉,在选择框是单选的情况下的演示效果:
可以看到,
选中一个选择框的时候,可以触发按钮组的 buttonClicked 和 buttonToggled 信号
再去选中另一个选择框的时候,第一个选择框的 buttonToggled 的信号又被触发了一次;
在点击已经选中的选择框的时候,可以单独触发 buttonToggled 信号
关于 QButtonGroup 的一些信号:
buttonClicked(QAbstractButton *button)
buttonClicked(int id)
buttonPressed(QAbstractButton *button)
buttonPressed(int id)
buttonReleased(QAbstractButton *button)
buttonReleased(int id)
buttonToggled(QAbstractButton *button, bool checked)
buttonToggled(int id, bool checked)
更多推荐
所有评论(0)