Qt常用的按钮控件编程(四)-- QCheckBox 按钮

本文介绍了QCheckBox按钮在Qt中的编程,包括三态功能、QButtonGroup的分组管理以及使用样式表文件进行外观设置。示例程序展示了如何创建多选设置,并针对Qt4和Qt5的差异进行了条件编译处理。同时,详细讲解了QButtonGroup的buttonToggled和buttonClicked信号在不同Qt版本中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文介绍QT常用控件的第四个按钮,QCheckBox 按钮编程。通过这个例子,进一步巩固QT管理资源机制,学习QCheckBox 复选框的三态功能和如何分组管理QCheckBox 复选框 。项目演示如何使用默认的分组和 QButtonGroup 进行多选设置。项目使用样式表文件进行外观设置。
文章中使用的例程和内容都是在chatgpt的帮助下完成的,例程经过测试通过。

感谢朋友提供的chatgpt软件,特别是其中的gpt-box桌面工具,更是我离不开的工具。感兴趣的同仁可前往一观(apsuai.com)。

我们的调试环境仍然是双架构Kits,编译调试在当前的ubuntu(qt5)中进行,重新编译后下载到目标arm设备(qt4)中运行。
我们的编程环境为:Ubuntu64位系统(22.04),目标架构:(1)qt5 x86_64 架构,(2)qt4 32位arm架构。
环境配置请参见《Qt常用的按钮控件编程(一)》第1节。


6、QCheckBox 按钮

QCheckBox是Qt框架中的一个控件类,它代表了一个复选框,用于允许用户对一组选项进行多项选择。QCheckBox通常出现在界面上的选项列表或设置界面中。
QCheckBox继承自QAbstractButton类,因此它具有与其他按钮控件相同的属性和方法。例如,可以使用setChecked()方法设置QCheckBox的选中状态,并使用text()方法获取显示文本。

QCheckBox还提供了一些额外的功能,例如支持三态状态(即“选中”、“未选中”和“半选中”)和部分透明度。可以通过setTristate()方法启用三态状态,或通过setCheckState()方法设置其状态。另外,可以使用setOpacity()方法设置QCheckBox的不透明度。
下面是几个常用的QCheckBox方法:

  • setText(const QString &text):设置QCheckBox的显示文本。
    
  • setChecked(bool checked):设置QCheckBox的选中状态。
    
  • isChecked():返回QCheckBox的选中状态。
    
  • setTristate(bool y):启用/禁用QCheckBox的三态状态。
    
  • setCheckState(Qt::CheckState state):设置QCheckBox的选中状态,包括Qt::Checked、Qt::Unchecked和Qt::PartiallyChecked。
    
  • checkState():返回QCheckBox的选中状态,包括Qt::Checked、Qt::Unchecked和Qt::PartiallyChecked。

6.1 例程功能和程序执行效果

创建一个基于 Qt QCheckBox 按钮c++例程,项目名称"_qcheckbox" ,不使用拖取控件,控件全部采用编程。主窗口上放置三个QCheckBox 按钮分为两组:

  • 第一组:一个按钮,是一个三态复选框,三种状态为选中,未选中,半选中;
  • 第二组:两个按钮,放在QButtonGroup 控件中,可以多选,有选中、未选中两种状态;
  • 程序包括三个控件的响应函数(两个槽函数)。
  • 编译完成后生成两个同名可执行程序_qcheckbox,一个使用使用Qt4库,运行在arm架构设备,另一个使用Qt5库,运行在当前ubuntu系统。
    程序执行效果:
    (1)程序启动后效果:
    在这里插入图片描述(2)点击后执行效果(其中之一):

在这里插入图片描述

6.2 生成项目

打开 Qt Creator 并创建一个新的 应用程序项目_qcheckbox,选择Widget作为基类,不要勾选“Generate form”,,不使用拖取控件,控件全部采用编程,将两个配置好的Kits同时选上,项目新建完成如下图。(详细的项目新建过程参见:《Qt常用的按钮控件编程(一)》)。

在这里插入图片描述

6.3 添加资源文件

在本例程的项目目录的images 文件夹中准备了3张图片(如下图),下面的步骤演示了如何将资源添加到项目中。
在这里插入图片描述

6.3.1 添加图片资源

  • 在项目目录中右键点击 Resources 目录,选择 Add New… ,并选择 Qt -> Qt Resource File。
    在这里插入图片描述在这里插入图片描述- 输入资源文件的名称(自行定义)和位置,然后点击“下一步”。
    在这里插入图片描述

在 Qt Creator 中新建资源文件后,默认会进入 res.qrc 文件编辑模式(如果关闭了,可以右键这个文件点击选择“Open in Editor”),为了方便分类管理文件,我们可以使用 Add Prefix 功能为资源文件添加前缀,前缀的格式应该为类似文件系统中的路径格式,例如 /images。

在这里插入图片描述为了确保路径正确,前缀中的 / 是必需的,它在资源文件引用时是路径分隔符,起到类似 Linux 下根节点的作用,我们现在第⑪处添加了前缀/。

在这里插入图片描述添加了前缀后,我们添加资源图片,放在/images 前缀的下面。这里我们导入在本项目路径 images 文件夹中的3张图片,添加完成需要按“Ctrl + S”保存 res.qrc 才会看到左边的结果。添加完成如下图。

在这里插入图片描述

6.3.2 添加 qss 文件

QSS 文件是使用 Qt 程序相关联的样式表文件。它由 GUI 元素的外观和感觉,包括布局,颜色,鼠标的行为,大小和字体。它的风格,一个可以合并到一个 UI(用户界面)。与 HTML 的 CSS 类似,Qt 的样式表是纯文本的格式定义,在应用程序运行时可以载入和解析这些样式定义,从而使应用程序的界面呈现不同的效果。
在这里插入图片描述如上图加入一个空白文件,新建的文件名 style.qss 文件,如下图,默认添加到项目的路径下,后面步骤采用默认,直至完成。
在这里插入图片描述编辑style.qss,保存,最后完成的项目如下图所示:

在这里插入图片描述第 10 行、第 13 行,第16行,设置 QCheckBox 的 indicator 的背景图片。这样当它们点击切换时就
会看到 QCheckBox 的三种选择状态了。

style.qss文件内容(方便拷贝):

QCheckBox{
   
spacing: 5px;
color: white;
}
QCheckBox::indicator {
   
width: 50px;
height: 50px;
}
QCheckBox::indicator:enabled:unchecked {
   
image: url(:/images/unchecked.png);
}
QCheckBox::indicator:enabled:checked {
   
image: url(:/images/checked.png);
}
QCheckBox::indicator:enabled:indeterminate {
   
image: url(:/images/indeterminate.png);
}

6.4 完成代码编辑

6.4.1 修改项目文件 _radiobutton.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

# Default rules for deployment.
qnx: target.path = /tmp/$${
   TARGET}/bin
else: unix:!android: target.path = /opt/$${
   TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    res.qrc

# 根据使用的 Qt 版本设置编译条件
greaterThan(QT_MAJOR_VERSION, 4) {
   
    # 如果使用的是 Qt 5 或者更新版本
    message("使用的是 Qt 5版本")

} else {
   
    # 如果使用的是 Qt 4 或者更早的版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值