• QtC++与QCheckBox详解


    介绍

    QCheckBox 是 Qt 中的一个控件类,用于创建复选框,其主要作用和特点如下:

    1. 多选功能: QCheckBox 用于创建复选框,允许用户从多个选项中选择一个或多个。用户可以通过单击复选框来选择或取消选项。

    2. 三态复选框: QCheckBox 可以具有三种状态:选中、未选中和未确定。这在一些情况下很有用,例如当用户需要选择一个选项,但不确定应该选择哪个选项时。

    3. 复选框组: 您可以将多个 QCheckBox 放入同一个复选框组,以确保它们是互斥的,即只能选择其中一个。这在需要单选多个选项的情况下非常有用。

    4. 获取和设置状态: 您可以使用 isChecked() 方法来检查复选框的当前状态,使用 setChecked() 方法来设置复选框的状态。

    5. 信号与槽: QCheckBox 可以发出信号,以便在用户与复选框交互时执行特定操作。您可以使用信号与槽机制连接复选框的信号。

    6. 样式和自定义: QCheckBox 可以自定义外观,包括文本、图标、背景颜色、字体等,以适应特定的应用程序设计。

    7. 工具提示: QCheckBox 支持工具提示文本,可用于提供复选框的描述或说明,当用户将鼠标悬停在复选框上时显示。

    8. 快捷键支持: QCheckBox 支持快捷键,允许用户通过键盘操作来选择或取消选项。

    9. 跨平台: Qt 是一个跨平台的框架,因此 QCheckBox 可以在不同操作系统上提供一致的外观和行为。

    总之,QCheckBox 是 Qt 中用于创建复选框的重要控件,可用于创建多选选项,包括正常的、三态的复选框,以及用于实现用户输入选择的部分。它适用于各种应用程序,从简单的多选选项到复杂的表单和表格,使用户能够方便地选择多个选项。

    示例

    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例1: 创建单个复选框
        QWidget widget1;
        widget1.setWindowTitle("示例1: 创建单个复选框");
        QCheckBox checkBox1("选项1", &widget1);
        checkBox1.setChecked(true); // 默认选中
        widget1.show();
    
        // 示例2: 创建复选框组
        QWidget widget2;
        widget2.setWindowTitle("示例2: 创建复选框组");
        QCheckBox checkBox2("选项1", &widget2);
        QCheckBox checkBox3("选项2", &widget2);
        QCheckBox checkBox4("选项3", &widget2);
    
        QVBoxLayout layout2;
        layout2.addWidget(&checkBox2);
        layout2.addWidget(&checkBox3);
        layout2.addWidget(&checkBox4);
        widget2.setLayout(&layout2);
        widget2.show();
    
        // 示例3: 使用信号与槽
        QWidget widget3;
        widget3.setWindowTitle("示例3: 使用信号与槽");
        QCheckBox checkBox5("选项1", &widget3);
        QCheckBox checkBox6("选项2", &widget3);
    
        // 连接信号与槽
        QObject::connect(&checkBox5, &QCheckBox::toggled, [](bool checked) {
            if (checked) {
                qDebug() << "选项1 被选中";
            } else {
                qDebug() << "选项1 被取消";
            }
        });
    
        QObject::connect(&checkBox6, &QCheckBox::toggled, [](bool checked) {
            if (checked) {
                qDebug() << "选项2 被选中";
            } else {
                qDebug() << "选项2 被取消";
            }
        });
    
        widget3.show();
    
        return a.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
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例4: 获取和设置复选框状态
        QWidget widget4;
        widget4.setWindowTitle("示例4: 获取和设置复选框状态");
        QCheckBox checkBox7("选项1", &widget4);
        QCheckBox checkBox8("选项2", &widget4);
    
        checkBox7.setChecked(true); // 设置为选中状态
        checkBox8.setChecked(false); // 设置为未选中状态
    
        QObject::connect(&checkBox7, &QCheckBox::stateChanged, [](int state) {
            if (state == Qt::Checked) {
                qDebug() << "选项1 被选中";
            } else {
                qDebug() << "选项1 被取消";
            }
        });
    
        QObject::connect(&checkBox8, &QCheckBox::stateChanged, [](int state) {
            if (state == Qt::Checked) {
                qDebug() << "选项2 被选中";
            } else {
                qDebug() << "选项2 被取消";
            }
        });
    
        widget4.show();
    
        // 示例5: 三态复选框
        QWidget widget5;
        widget5.setWindowTitle("示例5: 三态复选框");
        QCheckBox checkBox9("选项1", &widget5);
        QCheckBox checkBox10("选项2", &widget5);
        QCheckBox checkBox11("未确定选项", &widget5);
    
        checkBox11.setTristate(true); // 启用三态
        checkBox11.setCheckState(Qt::PartiallyChecked); // 设置为未确定状态
        widget5.show();
    
        // 示例6: 多个复选框分组
        QWidget widget6;
        widget6.setWindowTitle("示例6: 多个复选框分组");
        QCheckBox checkBox12("选项1", &widget6);
        QCheckBox checkBox13("选项2", &widget6);
        QCheckBox checkBox14("选项3", &widget6);
    
        QHBoxLayout layout6;
        layout6.addWidget(&checkBox12);
        layout6.addWidget(&checkBox13);
        layout6.addWidget(&checkBox14);
        widget6.setLayout(&layout6);
    
        QObject::connect(&checkBox12, &QCheckBox::stateChanged, [](int state) {
            if (state == Qt::Checked) {
                qDebug() << "选项1 被选中";
            } else {
                qDebug() << "选项1 被取消";
            }
        });
    
        QObject::connect(&checkBox13, &QCheckBox::stateChanged, [](int state) {
            if (state == Qt::Checked) {
                qDebug() << "选项2 被选中";
            } else {
                qDebug() << "选项2 被取消";
            }
        });
    
        QObject::connect(&checkBox14, &QCheckBox::stateChanged, [](int state) {
            if (state == Qt::Checked) {
                qDebug() << "选项3 被选中";
            } else {
                qDebug() << "选项3 被取消";
            }
        });
    
        widget6.show();
    
        return a.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
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例7: 使用按钮组管理复选框
        QWidget widget7;
        widget7.setWindowTitle("示例7: 使用按钮组管理复选框");
        QCheckBox checkBox15("选项1", &widget7);
        QCheckBox checkBox16("选项2", &widget7);
        QCheckBox checkBox17("选项3", &widget7);
    
        QButtonGroup buttonGroup1(&widget7);
        buttonGroup1.addButton(&checkBox15);
        buttonGroup1.addButton(&checkBox16);
        buttonGroup1.addButton(&checkBox17);
        widget7.show();
    
        // 示例8: 自定义样式
        QWidget widget8;
        widget8.setWindowTitle("示例8: 自定义样式");
        QCheckBox checkBox18("选项1", &widget8);
        QCheckBox checkBox19("选项2", &widget8);
    
        checkBox18.setStyleSheet("color: blue; font-weight: bold;");
        checkBox19.setStyleSheet("color: red; font-style: italic;");
        widget8.show();
    
        // 示例9: 在表单中使用复选框
        QWidget widget9;
        widget9.setWindowTitle("示例9: 在表单中使用复选框");
        QCheckBox checkBox20("同意用户协议", &widget9);
        // 可以在表单布局中添加更多字段
    
        widget9.show();
    
        return a.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
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // 示例10: 三态复选框
        QWidget widget10;
        widget10.setWindowTitle("示例10: 三态复选框");
        QCheckBox checkBox21("选项1", &widget10);
        QCheckBox checkBox22("选项2", &widget10);
        QCheckBox checkBox23("未确定选项", &widget10);
    
        checkBox23.setTristate(true); // 启用三态
        checkBox23.setCheckState(Qt::PartiallyChecked); // 设置为未确定状态
        widget10.show();
    
        // 示例11: 在表单中使用复选框
        QWidget widget11;
        widget11.setWindowTitle("示例11: 在表单中使用复选框");
        QCheckBox checkBox24("同意用户协议", &widget11);
        QCheckBox checkBox25("接收电子邮件通知", &widget11);
    
        // 可以在表单布局中添加更多字段
    
        widget11.show();
    
        // 示例12: 信号与槽
        QWidget widget12;
        widget12.setWindowTitle("示例12: 信号与槽");
        QCheckBox checkBox26("选项1", &widget12);
        QCheckBox checkBox27("选项2", &widget12);
    
        // 连接信号与槽
        QObject::connect(&checkBox26, &QCheckBox::toggled, [](bool checked) {
            if (checked) {
                qDebug() << "选项1 被选中";
            } else {
                qDebug() << "选项1 被取消";
            }
        });
    
        QObject::connect(&checkBox27, &QCheckBox::toggled, [](bool checked) {
            if (checked) {
                qDebug() << "选项2 被选中";
            } else {
                qDebug() << "选项2 被取消";
            }
        });
    
        widget12.show();
    
        return a.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
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
  • 相关阅读:
    Go 复合数据类型之结构体与自定义类型
    2.vscode 配置python开发环境
    cad批量打印pdf怎么弄?介绍三种打印方法
    RV1126双摄调试记录
    【洛谷】P1082 同余方程
    鸿蒙开发Ability Kit(程序框架服务):【向用户申请单次授权】
    做个男人,做个成熟的男人
    netmiko安装及使用
    PHY6230低成本遥控灯控芯片国产蓝牙BLE5.2 2.4G SoC
    Mac M3 Pro 安装 Zookeeper-3.4.6
  • 原文地址:https://blog.csdn.net/LuXiaoXin1999/article/details/134275189