当前位置: 首页 > news >正文

QT笔记----QCheckBox

文章目录

  • 概要
    • 1、QCheckBox 的基本概念
    • 2、单个QCheckBox
    • 3、多个QCheckBox同时应用
    • 3.1、实现效果
    • 3.2、实现Demo

概要

在 Qt 应用程序开发中,QCheckBox 是一个常用的用户界面元素,它允许用户在两种状态(选中和未选中)之间进行切换,也可以设置为三态(选中、未选中、部分选中)。本文将详细介绍 QCheckBox 的使用方法。

1、QCheckBox 的基本概念

QCheckBox 继承自 QAbstractButton 类,它具有按钮的基本特性,同时又有自己独特的状态表示。用户可以通过鼠标点击或者键盘操作来改变其状态。在很多场景下,比如设置选项、选择功能等,QCheckBox 都发挥着重要作用。

2、单个QCheckBox

(1)、单个QCheckBox,通过信号“checked(bool)”获取当前QCheckBox是否被选中,bool为true为选中,否则反之;

QCheckBox *checkBox=new QCheckBox();
connect(checkBox,SIGNAL(clicked(bool)),this,SLOT(hdl_cBold(bool)));

3、多个QCheckBox同时应用

3.1、实现效果

QCheckBoxDemo

3.2、实现Demo

(1)、项目目录结构
在这里插入图片描述(2)、Ui界面,借助QT工具,直接拖拽进画布,效果如下所示:
在这里插入图片描述(3)、根据效果的代码实现如下所示:

//main.cpp
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCheckBox>
#include <QRadioButton>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPlainTextEdit>
#include <QButtonGroup>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public:
    void init();  //参数初始化
    void cnnt();   //创建信号和槽函数的连接

public slots:
    void hdl_checkBox(int id,bool checked);//字体样式切换
    void hdl_radiButton();  //字体颜色切换
   
private:
    Ui::MainWindow *ui;
   QButtonGroup *m_fontColor; //创建QButtonGroup,将其封装
   QButtonGroup *m_fontStyle;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

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

void MainWindow::init()
{
    m_groupBox=new QButtonGroup;
    m_groupBox->addButton(ui->rBlack,0);
    m_groupBox->addButton(ui->rRed,1);
    m_groupBox->addButton(ui->rBlue,2);
    m_groupBox->setExclusive(true);  //只能同时选择一个
    ui->rBlack->setChecked(true);

    ui->plainTextEdit->setPlainText(tr("\n Hello World\n\n It is my demo"));
    QFont font;
    font.setPointSize(15); //字体大小
    ui->plainTextEdit->setFont(font);
}

void MainWindow::cnnt()
{
connect(m_fontStyle,QOverload<int,bool>::of(&QButtonGroup::buttonToggled),this,&MainWindow::hdl_checkBox);
    connect(m_fontColor,QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),this,&MainWindow::hdl_radiButton);
}
//字体样式判断 qcheckbox
void MainWindow::hdl_checkBox(int id,bool checked)
{
    switch (id) {
    case 0:
    {
        QFont font=ui->plainTextEdit->font();
        font.setUnderline(checked);
        ui->plainTextEdit->setFont(font);
         break;
    }
    case 1:
   {
        QFont font=ui->plainTextEdit->font();
        font.setItalic(checked);
        ui->plainTextEdit->setFont(font);
        break;
   }
     case 2:
    {
        QFont font=ui->plainTextEdit->font();
        font.setBold(checked);
        ui->plainTextEdit->setFont(font);
         break;
    }

    default:
        break;
    }
}

//字体颜色选择 qradiobutton
void MainWindow::hdl_radiButton()
{
     QTextCharFormat fontColor;
    switch (m_groupBox->checkedId()) {
    case 0:
    {
        fontColor.setForeground(Qt::black);
        ui->plainTextEdit->setStyleSheet("color:black");
         break;
    }
    case 1:
   {
       fontColor.setForeground(Qt::red);
       ui->plainTextEdit->setStyleSheet("color:red");
        break;
   }
     case 2:
    {
        fontColor.setForeground(Qt::blue);
        ui->plainTextEdit->setStyleSheet("color:blue");
         break;
    }

    default:
        break;
    }
}

相关文章:

  • Debug-037-table列表勾选回显方案
  • jar包代码混淆
  • 【嵌入式】C语言中malloc()和calloc()的区别
  • kotlin 内联函数 inline
  • Python编写服务监控程序
  • Unity Shader编程】之透明物体渲染
  • 第五: redis 安装 / find 查找目录
  • JVM常用概念之身份哈希码
  • Apache SeaTunnel脚本升级及参数调优实战
  • 指令系统(2017统考真题)
  • 人工智能在电子信息工程信号处理中的应用调研
  • 离线黑客攻击之绕过BIOS/EFI
  • openstack安装部署
  • docker-存储卷-网络
  • 游戏MOD伴随盗号风险,仿冒网站借“风灵月影”窃密【火绒企业版V2.0】
  • 存算分离是否真的有必要?从架构之争到 Doris 实战解析
  • INT202 Complexity of Algroithms 算法的复杂度 Pt.2 Search Algorithm 搜索算法
  • Error: The resource name must start with a letter
  • 代码随想录第55期训练营第七天|LeetCode454.四数相加II、383.赎金信、15.三数之和、18.四数之和
  • 基于javaweb的SSM+Maven宠物领养宠物商城流浪动物管理系统与实现(源码+文档+部署讲解)
  • 马上评|不再提“智驾”,新能源车企回归理性
  • 川大全职引进考古学家宫本一夫,他曾任日本九州大学副校长
  • 女租客欠租后失联,房东开门后无处下脚:40平公寓变垃圾场
  • “高校领域突出问题系统整治”已启动,聚焦招生、基建、师德等重点
  • AI世界的年轻人|横跨教育与产业,他说攻克前沿问题是研究者的使命
  • 福建两名厅级干部履新,张文胜已任省委省直机关工委副书记