Qt自定义checkbox实现按下回车键该项打勾
引言
- 开发环境
- 代码结构
- 示例代码
- 运行效果
- 总结
使用qt实现一个列表,列表中每一项中的类似一个checkbox,通过上下键可以切换选中项,按下回车键在已经选中的项前出现对勾。效果如下:
20241203_163929
开发环境
使用ubuntu下QtCreator4.11.。

代码结构
这里将项目的结构截图贴上,为了更好的复现项目 。
项目结构图如下:

ui文件中的控件采用在项目中用代码实现,没有在ui设计器中拖控件,是项目生成时生成的dialog.ui。
示例代码
本示例中有两个类可以单独拿来使用,作为自定义的checkbox,分别为MyCheckBox类和MyCheckMarkIcon类。这两个类用来实现一个自定义的checkbox。
下面是具体实现代码。
mycheckmarkicon.h
#ifndef MYCHECKMARKICON_H
#define MYCHECKMARKICON_H#include <QObject>
#include <QWidget>class MyCheckMarkIcon : public QWidget
{Q_OBJECT
public:explicit MyCheckMarkIcon(QWidget *parent = nullptr);void setColor(const QColor& color);void setSelected(const bool& bIsSelected);bool getSelected()const;
protected:void paintEvent(QPaintEvent *event) override;
signals:
private:QColor m_color;QColor m_backColor;//背景色bool m_bIsSelected;//是否选中
};#endif // MYCHECKMARKICON_H
mycheckmarkicon.cpp
#include "mycheckmarkicon.h"#include <QPainter>
#include <QStyleOption>MyCheckMarkIcon::MyCheckMarkIcon(QWidget *parent) : QWidget(parent),m_color(Qt::transparent)
{setFixedSize(20,20);
}void MyCheckMarkIcon::setColor(const QColor &color)
{m_color = color;m_bIsSelected == true?m_backColor=Qt::yellow:m_backColor = QColor("#6A5ACD");update();
}void MyCheckMarkIcon::setSelected(const bool &bIsSelected)
{m_bIsSelected = bIsSelected;
}bool MyCheckMarkIcon::getSelected() const
{return m_bIsSelected;
}void MyCheckMarkIcon::paintEvent(QPaintEvent *event)
{QPainter painter(this);QPen pen(Qt::SolidLine);pen.setWidth(2);pen.setBrush(m_backColor);QRect rect(0,0,20,20);painter.fillRect(rect,m_backColor);//绘制填充矩形pen.setColor(m_color);painter.setPen(pen);QPainterPath path;path.moveTo(rect.left()+5,rect.right()-5);path.lineTo(rect.left()+10,rect.bottom());path.lineTo(rect.left()+15,rect.top()+5);painter.strokePath(path,pen);//使用指定的笔在路径上绘制轮廓
}
mycheckbox.h
#ifndef MYCHECKBOX_H
#define MYCHECKBOX_H#include <QWidget>
#相关文章:
Qt自定义checkbox实现按下回车键该项打勾
引言 开发环境代码结构示例代码运行效果总结使用qt实现一个列表,列表中每一项中的类似一个checkbox,通过上下键可以切换选中项,按下回车键在已经选中的项前出现对勾。效果如下: 20241203_163929 开发环境 使用ubuntu下QtCreator4.11.。 代码结构 这里将项目的结构截图贴…...
头歌作业 数据库与大数据管理 期末复习资料
1、 下列说法错误的是?c A、UserCF算法推荐的是那些和目标用户有共同兴趣爱好的其他用户所喜欢的物品 B、ItemCF算法推荐的是那些和目标用户之前喜欢的物品类似的其他物品 C、UserCF算法的推荐更偏向个性化 D、UserCF随着用户数目的增大,用户相似度…...
2023年华数杯数学建模A题隔热材料的结构优化控制研究解题全过程文档及程序
2023年华数杯全国大学生数学建模 A题 隔热材料的结构优化控制研究 原题再现: 新型隔热材料 A 具有优良的隔热特性,在航天、军工、石化、建筑、交通等高科技领域中有着广泛的应用。 目前,由单根隔热材料 A 纤维编织成的织物,…...
如何抓取亚马逊页面动态加载的内容:Python爬虫实践指南
引言 在现代电商领域,数据的重要性不言而喻。亚马逊作为全球领先的电商平台,其页面上动态加载的内容包含了丰富的商品信息。然而,传统的爬虫技术往往难以应对JavaScript动态加载的内容。本文将详细介绍如何使用Python结合Selenium工具来抓取…...
在线钢琴源码
在线钢琴源码 是利用HTML5技术开发的在线钢琴应用,致力于为钢琴爱好者、音乐爱好者提供一个优雅、简洁的平台 在学习工作之余可以在线弹钢琴,享受音乐、生活的美好。自由钢琴支持自动演奏和手动演奏,简单易学,快来试试吧 源码截…...
【OpenDRIVE_Python】使用python脚本输出OD数据中含有信号灯地物的道路ID和信号灯信息
示例代码说明: 遍历OD数据中每条道路Road,若Road中存在信号灯地物signal,则将该道路ID和包含的所有信号灯输出到xml文件中。补充:一个Road中可能存在多个信号灯signal,这里取signal的上级标签signals,则将所有信号灯同…...
普中51单片机——LED流水灯模块
1、GPIO概念 GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51 单片机芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、 控制以及数据采集的功能。 1.1、GPIO分类 &a…...
智已汽车x-signature 登录算法 签到
智已汽车x-signature 登录算法 签到 python代码成品...
浅谈留学essay之初级研究:What, why and how
所谓初级研究(primary research)指的是对研究者从观察、实践、访谈、问卷等第一手研究方法中得出的原始数据进行分析的研究方式。其主要特征是直接性(directness)、客观性(factual)、一手性(fir…...
Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。
项目启动5分钟,很明显有问题。像网上其他的提高jvm参数就不说了,应该不是这个问题,也就快一点。 首先找到自己的电脑名称(用命令行也行,只要能找到自己电脑名称就行,这里直接在共享里看)。 复制…...
电商营销活动-抽奖业务
目录 一、抽奖系统的核心功能 二、抽奖系统的业务逻辑 三、抽奖系统的业务优势 四、抽奖系统的业务注意事项 电商营销活动中的抽奖系统业务,是一种通过设立抽奖活动来吸引用户参与、提升用户活跃度和转化率的营销手段。以下是对电商营销活动抽奖系统业务的详细解…...
虚拟DOMdiff算法
一.什么是虚拟DOM? 虚拟DOM是 VUE 一个比较核心的概念,为什么会有虚拟DOM呢?首先可以与传统的网页开发做个对比,在没有 VUE 和 REACT 框架之前,我们都是使用原生 JavaScript 或者 jQuery,那时候是直接对 D…...
IDEA实现javaweb用户登录(增删改查)
IDEA实现javaweb用户登录(增删改查) 文章目录 IDEA实现javaweb用户登录(增删改查)前言一、IDEA 软件的简单使用1 创建一个普通 java 项目2 新增 web 配置将项目由普通的Java项目变为 javaweb项目2.1 新增 web 配置2.2 新增项目文件…...
JS进阶01-异步编程、跨域、懒加载
目录 一、异步编程 1.1.异步编程的基本概念与重要性 1.2.事件循环(Event Loop)机制 1.3.JavaScript异步编程的常见方式及详解 示例 1.4.异步编程的最佳实践 二、跨域 2.1.什么是跨域 2.2.怎么解决跨域 1. JSONP(JSON with Padding&…...
2012年 数模美赛 C题 犯罪克星
一、问题重述 银河犯罪建模中心(ICM)正在调查一个犯罪阴谋。调查人员已经识别出一些阴谋成员,但希望在逮捕之前确定其他成员和领导人。所有嫌疑人和可能的同谋者都受雇于同一家公司,并在一个大的综合办公室里工作。该公司正在开发…...
社区团购中 2+1 链动模式商城小程序的创新融合与发展策略研究
摘要:本文聚焦于社区团购这一新兴零售模式的发展态势,深入探讨 21 链动模式商城小程序与之融合的创新机制与应用策略。通过剖析社区团购的运营模式、优势特点以及发展现状,结合 21 链动模式商城小程序的功能特性,研究二者协同作用…...
【Go底层】time包Ticker定时器原理
目录 1、背景2、go版本3、源码解释【1】Ticker结构【2】NewTicker函数解释 4、代码示例5、总结 1、背景 说到定时器我们一般想到的库是cron,但是对于一些简单的定时任务场景,标准库time包下提供的定时器就足够我们使用,本篇文章我们就来研究…...
RoBERTa- 稳健优化的 BERT 预训练模型详解
一、引言 自 BERT(Bidirectional Encoder Representations from Transformers)问世,预训练语言模型在自然语言处理(NLP)领域掀起革命浪潮,凭卓越表现大幅刷新诸多任务成绩。RoBERTa 承继 BERT 架构&#x…...
【C++】continue语句、goto语句
1、continue 语句 作用:在循环语句中,跳过本次循环中余下尚未执行的语句。继续下一次循环。 注意:continue只能用于循环中。 示例: 代码: //continue的用法 #include<iostream> using namespace std; int ma…...
postgresql与pgvector安装与使用
环境变量修改 打开 .bashrc 文件进行编辑: vim ~/.bashrc在文件的末尾添加上面的环境变量配置 # 添加 PostgreSQL 可执行文件路径到系统 PATH export PATH/home/....../pg/postgresql-12.4/bin:$PATH# 设置 PostgreSQL 数据目录 export PGDATA/home/....../pg/pos…...
ENet核心架构深度解析:从主机管理到对等通信
ENet核心架构深度解析:从主机管理到对等通信 【免费下载链接】enet ENet reliable UDP networking library 项目地址: https://gitcode.com/gh_mirrors/en/enet ENet是一款高性能的可靠UDP网络库,专为实时多人游戏和低延迟应用设计。它通过创新的…...
Graphormer在药物发现中的应用:催化剂吸附预测落地实践
Graphormer在药物发现中的应用:催化剂吸附预测落地实践 1. 项目背景与价值 在药物研发和材料科学领域,分子属性预测一直是一项耗时且昂贵的任务。传统实验方法需要大量试错,而计算化学方法又面临精度与效率的平衡问题。Graphormer作为一款基…...
AMD显卡专属优化:Ollama-for-amd本地大模型部署终极指南
AMD显卡专属优化:Ollama-for-amd本地大模型部署终极指南 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mirrors/ol/ol…...
Isaac Sim 4.1.0 国内网络环境下的三种下载与安装提速方案(含离线包处理)
Isaac Sim 4.1.0 国内网络环境下的高效安装指南 对于国内开发者而言,安装NVIDIA Isaac Sim往往面临下载速度缓慢、连接不稳定等问题。本文将提供三种经过验证的解决方案,帮助您快速完成安装。 1. 直链下载加速方案 通过分析Omniverse Launcher的日志文件…...
AEC-Q100到AEC-Q200:汽车电子组件认证标准差异与应用场景详解
AEC-Q100到AEC-Q200:汽车电子组件认证标准差异与应用场景详解 当一辆现代汽车驶过零下40度的北极圈,又穿越50度的沙漠高温,其电子系统仍需要保持毫秒级的响应精度——这种极端可靠性背后,是AEC-Q系列认证标准构筑的质量防线。作为…...
全能型 AI论文工具排行榜(2026 最新实测)
基于功能全面性、学术适配性、用户反馈质量以及操作便捷性,本文对当前主流AI论文写作工具进行了系统测评,按综合使用价值从高到低进行排序,并详细解析各工具的核心优势与适用领域。🏆 第一梯队:全流程学术解决方案&…...
用.NET 6+和secs4net快速搭建半导体设备通信主机(附完整代码示例)
基于.NET 6与secs4net构建半导体设备通信主机的实战指南 在半导体制造领域,设备间的高效通信是自动化生产线的核心需求。SECS/GEM协议作为行业标准,为设备与主机系统间的数据交换提供了可靠框架。本文将展示如何利用.NET 6平台和secs4net库快速搭建功能完…...
stm32cubeide+freertos+c/c++混合编程实战避坑指南
1. STM32CubeIDE与FreeRTOS环境搭建避坑指南 第一次用STM32CubeIDE配置FreeRTOS时,我对着时钟源选项纠结了半小时。后来发现这个选择直接影响系统稳定性——选错时钟源会导致任务调度像喝醉了一样飘忽不定。实测推荐用TIM6替代默认的SysTick作为时基,原因…...
Linux进程,存储,软件,日志004
目录一、进程管理二、磁盘与存储管理三、软件包管理四、系统日志管理一、进程管理1.1 进程概念与状态进程定义:进程是正在执行的程序实例,包含程序代码、数据和系统资源。进程状态转换:● 运行(RUNNING):进程正在CPU上执行● 就绪…...
嵌入式系统中SipHash轻量级哈希实现与优化
1. SipHash 嵌入式底层实现技术解析SipHash 是一种基于加法-循环-异或(Add-Rotate-Xor, ARX)结构的伪随机函数族,专为短输入消息设计,在嵌入式系统中广泛用于哈希表键值保护、拒绝服务(DoS)防护、安全计数器…...
