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

qt可点击的QLabel

需求——问题与思路

使用wpf实现一个可点击的超链接label相当简单(如下图),但是qt的QLabel不会响应点击事件,那就从QLabel继承一个类,然后在该类中重写mousePressEvent函数,并在该函数中对左键点击事件做响应处理即可,这里只是发送自定义的clicked信号,以便让QLabel像普通的QPushButton一样响应用户的点击事件。
请添加图片描述

代码

只有一个头文件ClickLabel.h

#pragma once#include <QObject>
#include <QLabel>
#include <QMouseEvent>//超链接样式、响应点击信号的自定义label
class ClickLabel : public QLabel {Q_OBJECT
public:explicit ClickLabel(QWidget* parent = nullptr) : QLabel(parent) {}signals:// 自定义的点击信号void clicked();protected:void mousePressEvent(QMouseEvent* event) override {// 检查鼠标左键点击事件if (event->button() == Qt::LeftButton) {// 发出自定义的点击信号emit clicked();}// 将事件传递给父类处理QLabel::mousePressEvent(event);}//在 mouseEnterEvent() 中设置下划线字体,并更新标志位以指示鼠标进入状态。
//在 mouseLeaveEvent() 中恢复正常字体,并更新标志位以指示鼠标离开状态。
protected:void enterEvent(QEvent* event) override{setFontUnderline(true);isMouseEntered = true;QLabel::enterEvent(event);}void leaveEvent(QEvent* event) override{setFontUnderline(false);isMouseEntered = false;QLabel::leaveEvent(event);}private:bool isMouseEntered;void setFontUnderline(bool underline){QFont font = this->font();font.setUnderline(underline);this->setFont(font);}
};

用法

将一个普通的QLabel控件提升为ClickLabel即可。

在这里插入图片描述

相关文章:

  • nacos开启鉴权后,springboot注册失败
  • STC89C52RC单片机设计的FM收音机+自动搜台+存储电台(程序+原理图+PCB)
  • CC6利用链分析
  • BeanUtils拷贝List数据
  • 无忧易售功能:刊登页面文本翻译,无缝对接全球买家
  • DDR自学笔记
  • 前端利用vue如何实现导入和导出功能.md
  • springboot @configuration注解的配置, @bean注解方法a, 在@bean注解 getb(){}需要注入a
  • llm学习-3(向量数据库的使用)
  • 04-《黄蜀葵》
  • 软考的报名详细流程
  • 详解flink sql, calcite logical转flink logical
  • vue 组件el-tree添加结构指示线条
  • Leetcode 538:把二叉搜索树转化为累加树
  • C++ QT 全局信号的实现
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [译]Python中的类属性与实例属性的区别
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • Brief introduction of how to 'Call, Apply and Bind'
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MySQL数据库运维之数据恢复
  • Swoft 源码剖析 - 代码自动更新机制
  • use Google search engine
  • 动态规划入门(以爬楼梯为例)
  • 浮动相关
  • 关于List、List?、ListObject的区别
  • 基于webpack 的 vue 多页架构
  • 基于游标的分页接口实现
  • 讲清楚之javascript作用域
  • 聚类分析——Kmeans
  • 蓝海存储开关机注意事项总结
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ######## golang各章节终篇索引 ########
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (1)虚拟机的安装与使用,linux系统安装
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十三)MipMap
  • (一)插入排序
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net6 webapi log4net完整配置使用流程
  • .net操作Excel出错解决
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • ??在JSP中,java和JavaScript如何交互?