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

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>
#
http://www.lryc.cn/news/496517.html

相关文章:

  • 头歌作业 数据库与大数据管理 期末复习资料
  • 2023年华数杯数学建模A题隔热材料的结构优化控制研究解题全过程文档及程序
  • 如何抓取亚马逊页面动态加载的内容:Python爬虫实践指南
  • 在线钢琴源码
  • 【OpenDRIVE_Python】使用python脚本输出OD数据中含有信号灯地物的道路ID和信号灯信息
  • 普中51单片机——LED流水灯模块
  • 智已汽车x-signature 登录算法 签到
  • 浅谈留学essay之初级研究:What, why and how
  • Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。
  • 电商营销活动-抽奖业务
  • 虚拟DOMdiff算法
  • IDEA实现javaweb用户登录(增删改查)
  • JS进阶01-异步编程、跨域、懒加载
  • 2012年 数模美赛 C题 犯罪克星
  • 社区团购中 2+1 链动模式商城小程序的创新融合与发展策略研究
  • 【Go底层】time包Ticker定时器原理
  • RoBERTa- 稳健优化的 BERT 预训练模型详解
  • 【C++】continue语句、goto语句
  • postgresql与pgvector安装与使用
  • 开箱即用,阿里开源!专业AI 聊天界面工具包:Ant Design X
  • 详解版本控制工作原理及优势,常见的版本控制系统对比(HelixCore、Git、SVN等)
  • Vue2 vs Vue3:核心原理与性能优化详解
  • Qt+GDAL属性计算软件开发记录
  • 在超表面中琼斯矩阵的使用
  • 在macOS上从源码部署RAGFlow-0.14.1
  • 2-2-18-9 QNX系统架构之文件系统(二)
  • 【经管数据】上市公司企业审计报告时滞数据、 年报披露时滞数据(2001-2022年)
  • debian ubuntu armbian部署asp.net core 项目 开机自启动
  • 无人机地面遥控遥测技术与算法概述!
  • 游戏引擎学习第30天