您当前的位置: 首页 > 

令狐掌门

暂无认证

  • 0浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QButtonGroup的使用

令狐掌门 发布时间:2020-03-02 03:36:24 ,浏览量:0

        当有一组按钮时,可以共用一个槽函数,在该槽函数中做判断逻辑处理,那么此时就需要用到QButtonGroup类了,例如有如下界面

         可以把这四个按钮全部放到按钮组里,根据按钮的序号分别进行调用。

1 QButtonGroup类常用方法简介

(1)addButton,声明如下

void QButtonGroup::addButton(QAbstractButton *button, int id = -1)

   Qt助手的解释:

          Adds the given button to the button group. If id is -1, an id will be assigned to the button. Automatically assigned ids are guaranteed to be negative, starting with -2. If you are assigning your own ids, use positive values to avoid conflicts.

          See also removeButton() and buttons().

翻译如下:

         将给定的按钮添加到按钮组。如果id为-1,则将为按钮分配一个id。自动分配的id保证是负数,从-2开始。如果您要分配自己的id,请使用正值来避免冲突。

(2)setExclusive 设置互斥

(3)按钮点击信号 buttonClicked 

2 如何使用QButtonGroup

      包含头文件      #include

      我用QtCreator创建的项目

      主界面头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:
    void onBtnFunc(int n);

private:
    Ui::MainWindow *ui;

    //声明按钮组对象
    QButtonGroup *m_buttonGroup;
};
#endif // MAINWINDOW_H

      cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_buttonGroup = new QButtonGroup();

    //将4个按钮绑定到按钮组,并设置序号
    m_buttonGroup->addButton (ui->btn1, 0);
    m_buttonGroup->addButton (ui->btn2, 1);
    m_buttonGroup->addButton (ui->btn3, 2);
    m_buttonGroup->addButton (ui->btn4, 3);
    m_buttonGroup->setExclusive(true);

    //按钮组信号槽
    connect (m_buttonGroup, SIGNAL (buttonClicked(int)), this, SLOT(onBtnFunc(int)));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::onBtnFunc(int n)
{
    quint16 a = m_buttonGroup->checkedId();
    ui->lineEdit->setText("btn" + QString::number(n) + " clicked");
}


       checkdId获取的好像是错误值,不知道什么鬼,不过也用不用,用信号传过来的值,或者用sender()也可以判断是哪个被点击了。

       编译即可运行

       QButtonGroup和sender()有点类似,二者可以配合使用。

       Qt sender()的使用可以看这篇文章:https://blog.csdn.net/yao_hou/article/details/104573507

3 项目源码链接

       https://github.com/linghuzhangmen/QButtonGroup_Test

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0475s