• 【Qt控件之QButtonGroup】概述及使用


    概述

    QButtonGroup 类提供了一个容器来组织一组按钮部件。
    QButtonGroup 提供了一个抽象容器,可以将按钮部件放置其中。它不提供此容器的可视表示(请参见 QGroupBox,用于容器部件),而是管理组中每个按钮的状态。
    一个互斥按钮组会关闭除被点击的按钮之外的所有可选(切换)按钮。默认情况下,按钮组是互斥的。按钮组中的按钮通常是可选的 QPushButtonQCheckBox(通常用于非互斥按钮组)或 QRadioButton。如果创建了一个互斥按钮组,应确保组中的一个按钮在初始状态下被选中;否则,该组将初始处于没有按钮被选中的状态。
    可以使用 addButton() 将按钮添加到组中,并使用 removeButton() 将其移除。如果组是互斥的,则可以使用checkedButton()获得当前选中的按钮。如果按钮被点击,则会发出buttonClicked()信号;对于互斥组中的可选按钮,这意味着按钮已被选中。组中的按钮列表可以通过buttons()返回。
    此外,QButtonGroup 还可以在整数和按钮之间进行映射。可以使用 setId() 为按钮分配一个整数 ID,并使用id()获取它。当前选中按钮的 ID 可以使用checkedId()获得,并且有一个重载的 buttonClicked() 信号,它会发出按钮的 ID。ID==-1QButtonGroup保留为“无此按钮”。映射机制的目的是简化在用户界面中表示枚举值的方式。

    常用函数

    QButtonGroup 类的构造函数、常用函数、枚举值、信号和槽如下:

    1. 构造函数:

      • QButtonGroup(QWidget *parent = nullptr):构造一个按钮组,父部件为定的 parent。
    2. 常用函数:
      - void addButton(QAbstractButton *button, int id = -1):将按钮 button 添加到按钮组中,并可为其指定一个整数 ID。

      • void removeButton(QAbstractButton *button):将按钮 button 从按钮组中移除。
      • QList buttons() const:返回按钮组中的所有按钮。
      • void setExclusive(bool exclusive):设置按钮组是否为互斥模式。如果 exclusive 为 true,则在组中只有一个按钮可以被选中;如果为 false,则允许多个按钮同时被选中。
      • void setId(QAbstractButton *button, int id):为按钮 button 设置一个整数 ID。
      • int id(QAbstractButton *button) const:返回按钮 button整数 ID。
      • QAbstractButton *button(int id) const:具有指定整数 ID 的按钮。
      • QAbstractButton *checkedButton() const:返回当前被选中的按钮。
      • int checkedId() const:返回当前被选中按钮的整数 ID。
    3. 枚举值:

      • QButtonGroup::ButtonClicked:按钮被点击的信号类型,包含按钮的指针。
    4. 信号:

      • void buttonClicked(QAbstractButton *button):当按钮被点击时发出的信号,传递被点击的按钮的指针。
    5. 槽:

      • void clicked(QAbstractButton *button):当按钮被点击时触发的槽函数。

    使用示例

    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        QButtonGroup buttonGroup;
        
        QPushButton *button1 = new QPushButton("Button 1");
        QPushButton *button2 = new QPushButton("Button 2");
        QPushButton *button3 = new QPushButton("Button 3");
    
        buttonGroup.addButton(button1, 1);
        buttonGroup.addButton(button2, 2);
        buttonGroup.addButton(button3, 3);
    
        QObject::connect(&buttonGroup, &QButtonGroup::buttonClicked, [&](QAbstractButton *button) {
            qDebug() << "Button clicked:" << button->text();
            qDebug() << "Button ID:" << buttonGroup.id(button);
        });
    
        button1->click(); // 模拟点击按钮1
    
        return app.exec();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    提示:
    如果以上代码信号和槽无法执行,是由于信号重写,可用SIGNALSLOT进行连接。

    效果

    在这里插入图片描述

    在这个示例中,创建了一个按钮组 buttonGroup,并向其中添加了三个 QPushButton 按钮,分别设置了它们的文本和整数 ID。
    当按钮被点击时,会触发 buttonClicked 信号,并打印出被点击的按钮的文本和整数 ID。
    通过调用 button1->click() 模拟点击了按钮1,从而触发响应的信号和槽函数。

  • 相关阅读:
    肥泽-酒店辅助订购系统
    华为数通方向HCIP-DataCom H12-831题库(单选题:1-20)
    计算机毕业设计(附源码)python自助旅游平台
    【效率提升】倍速插件Global Speed
    漂亮的bootstrap后台模板
    爬虫与反爬:一场无休止之战
    第16章 - 垃圾回收相关概念
    grafana api创建dashboard 记录
    【MTK】 配置GPIO控制前置闪光灯
    【Verilog】跨时钟域处理(一)——多bit MUX同步
  • 原文地址:https://blog.csdn.net/MrHHHHHH/article/details/133894498