首页 > 其他分享 >【QT入门】 Qt自定义控件与样式设计之QCheckBox qss实现按钮开关

【QT入门】 Qt自定义控件与样式设计之QCheckBox qss实现按钮开关

时间:2024-04-10 19:32:55浏览次数:15  
标签:控件 Qt 自定义 状态 复选框 选中 QCheckBox

往期回顾

【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客

【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框-CSDN博客

【QT入门】 Qt自定义控件与样式设计之QComboBox样式表介绍-CSDN博客

 【QT入门】 Qt自定义控件与样式设计之QCheckBox、qss实现按钮开关

一、最终效果

实现点击按钮切换开启和关闭两种状态,并对两种状态进行不同的样式设计,其实很简单,用了两张图片去切换。

二、checkbox控件 

在Qt框架中,checkbox控件是通过QCheckBox类来实现的。QCheckBox类提供了一种方便的方式来创建和管理复选框控件,用于表示两种状态之间的选择,类似于HTML中的checkbox元素。

1、常见特点和用法

1.1创建QCheckBox控件

可以使用以下代码在Qt中创建一个QCheckBox控件:

QCheckBox *checkBox = new QCheckBox("选择项", parent);
1.2设置文本和状态

可以使用setText()方法设置复选框显示的文本,setChecked()方法设置复选框的选中状态。

1.3获取复选框状态

可以使用isChecked()方法来获取复选框当前的选中状态。

1.4信号和槽机制

QCheckBox类提供了stateChanged(int state)信号,可以通过连接这个信号和槽函数来响应复选框状态的改变。

1.5样式定制

可以通过设置样式表来自定义复选框的外观,比如改变颜色、大小、边框等。

1.6布局管理

可以将QCheckBox控件放置在布局管理器中,以便更好地控制其位置和大小。

2、实现按钮开关示例

上面说了,QCheckBox类提供了一种方便的方式来创建和管理复选框控件,用于表示两种状态之间的选择,但是,其实checkbox是一个三态按钮,还有一个状态,不仅仅有选中和未选中两种状态,还有一种部分选中状态

ConstantValueDescription
Qt::Unchecked                0        The item is unchecked.
Qt::PartiallyChecked         1        The item is partially checked. Items in hierarchical models may be partially checked if some, but not all, of their children are checked.
Qt::Checked                  2        The item is checked.

2.1状态解释

Qt::Unchecked (数值为0):表示复选框未被选中,即未被勾选的状态。
Qt::PartiallyChecked (数值为1):表示复选框处于部分选中状态。在具有层次结构的模型中,如果某个项目的部分子项目被选中,但不是所有子项目都被选中,那么该项目就会处于部分选中状态。
Qt::Checked (数值为2):表示复选框已被选中,即被勾选的状态。

2.2代码示例

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

    ui->checkBox->setFixedSize(128, 64);

    QString qss = "QCheckBox::indicator:unchecked{ \
                   image:url(:/resources/status_close.png); \
                   } \
                   QCheckBox::indicator:checked { \
                   image: url(:/resources/status_open.png); \
                   }";

    ui->checkBox->setStyleSheet(qss);
    ui->checkBox->setChecked(true);
    //ui->checkBox->setTristate(true);

    connect(ui->checkBox, &QCheckBox::stateChanged , [=](int state){
        qDebug() << state;
    });
}

以上就是QCheckBox qss实现按钮开关基本示例,更多是对QCheckBox控件的掌握

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

标签:控件,Qt,自定义,状态,复选框,选中,QCheckBox
From: https://blog.csdn.net/LF__plus/article/details/137600811

相关文章

  • Qt使用Sqlite数据库-2
        上一篇文章介绍了sqlite数据库在Qt中基本使用方法(链接:Qt使用Sqlite数据库-1(入门级)-CSDN博客)。今天继续学习数据库常用的语法。1.删除数据库内容voiddeleteData(){QStringSql;//拼接sql语句Sql="DELETEFROMPerson_TableWHEREName='张......
  • 自定义Python实用函数-返回指定目录及其子目录和指定文件扩展名的文件清单列表
    importosdefget_files(file_path,image_types_set=()):"""返回指定目录及其子目录下、指定文件扩展名的文件清单列表。若image_types_set参数为空,则返回图片文件清单列表。若image_types_set参数为['.*'],则返回所有文件清单列表。"""filenames......
  • 发挥自定义表单开源优势,助力实现流程化办公!
    在数字化发展进程中,利用低代码技术平台、自定义表单开源的优势特点,可以让企业实现流程化办公,从而实现提质增效的办公目的。作为一种新兴的应用开发模式,低代码技术平台获得了很多新老客户朋友的青睐和喜爱,正以它自身的优势和特点为企业的发展强劲赋能。想要了解自定义表单开源优势......
  • 嵌入式开发之瑞芯微RK356x-Buildroot 添加自定义应用程序1
    上一篇我们说到具体如何去配置Buildroot,编译,验证本章我们需要添加自己的应用程序,我们就以helloworld为例子吧1.首先我们进入buildroot目录,并打开package/Config.in拉到最下面添加如下内容menu"NexyhoApp" source"package/Nexyho/Config.in"endmenu2.创建Nexyho文......
  • MQTT协议特点及数据包结构详解(值得珍藏)
    点击下载《MQTT协议特点及数据包结构详解(值得珍藏)》1.前言MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,用极少的代码和有......
  • ROS中自定义全局算法规划器(c++)
     ros中编写一个全局路径规划器并集成为ros插件,加载到turtlebot3机器人平台上仿真验证参考资料:ROS中自定义全局规划器(上)_算法部署_哔哩哔哩_bilibili官网教程:navigation/Tutorials/WritingAGlobalPathPlannerAsPlugininROS-ROSWiki1.建立工作空间mkdir-pjps_......
  • python收到MQTT消息后再发http请求
    python收MQTT消息和 发http请求的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2http.py#python3.6importloggingimportrandomimporttimeimportrequests#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER='......
  • 采用自定义注解 和 AOP 完成日志记录
    1、声明一个自定义注解@Retention注解包含一个RetentionPolicy类型的属性value,用于指定注解的保留策略,常用的保留策略包括:RetentionPolicy.SOURCE:表示注解仅在源代码中保留,编译器编译时会将其忽略,不会保存在编译后的字节码中。RetentionPolicy.CLASS:表示注解在编译后的......
  • python收到MQTT消息后写入mySQL
    python收MQTT消息和写mySQL的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2mysql.py#python3.6importloggingimportrandomimporttimeimportmysql.connector#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER......
  • Qt QCharts绘制柱状图,柱高和y轴数据刻度不匹配
    QCharts绘制柱状图,柱高和y轴数据刻度不匹配1//在项目pro文件中添加以下内容2QT+=charts34//在.h文件中添加以下内容,注意:需要将头文件及命名空间添加到ui命名空间之前,否则将提示错误5#include<QtCharts/QChartView>6#include<QtCharts/QBarSerie......