QT为QLabel添加Click事件(如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件)

其实就是改写了一个函数:mouseReleaseEvent,当在QLabel放开鼠标的时,就发射点击信号:

ClickedLabel.h

#ifndef CLICKEDLABEL_H
#define CLICKEDLABEL_H #include <QLabel>
#include <QWidget>
#include <Qt> class ClickedLabel : public QLabel
{
Q_OBJECT
public:
explicit ClickedLabel(QWidget *parent = ,Qt::WindowFlags f=Qt::WindowFlags());
~ClickedLabel(); signals:
void clicked(); protected:
void mouseReleaseEvent(QMouseEvent *ev);
}; #endif // CLICKEDLABEL_H

ClickedLabel.cpp

#include "clickedlabel.h"

ClickedLabel::ClickedLabel(QWidget *parent,Qt::WindowFlags f):QLabel(parent)
{ } ClickedLabel::~ClickedLabel()
{ } void ClickedLabel::mouseReleaseEvent(QMouseEvent *ev)
{ emit clicked();
}

总的来说,如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件。因为我们可以通过事件来改变组件的默认操作。比如,如果我们要自定义一个能够响应鼠标事件的EventLabel,我们就需要重写QLabel的鼠标事件,做出我们希望的操作,有可能还得在恰当的时候发出一个类似按钮的clicked()信号(如果我们希望让这个EventLabel能够被其它组件使用)或者其它的信号。

然后在UI界面中右键菜单中选择“提升到”,在对话框中输入对应的派生类名称和头文件。之后单击“添加”按钮

然后选中提升后的label,在右键菜单中选择改变信号/槽,在信号中增加 clicked()
 
 
 
然后在转到槽中选择clicked信号即可。

最新文章

  1. 总结一下CSS中的定位 Position 属性
  2. windows server 2003下安装iis6+php
  3. Python3基础 reverse 将列表倒序排列
  4. Ubuntu及Windows ADB设备no permissions的解决方案
  5. jquery ajax json简单的分页,模拟数据,没有封装,只显示原理
  6. HW4.20
  7. SuperSocket快速入门(一):什么是SuperSocket
  8. OpenSuSE zypper OpenStack Icehouse repoAdd
  9. PHP文件相关函数试题
  10. 浅谈oracle树状结构层级查询之start with ....connect by prior、level及order by
  11. 使用Fabric Node SDK进行Invoke和Query
  12. Web版记账本开发记录(一)代码和功能展示
  13. 脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?
  14. 转 docker创建私有仓库和k8s中使用私有镜像
  15. [Linux] 设置系统时区
  16. :装饰者模式--Beverage
  17. python模块:sys
  18. 【js】关于正则表达式
  19. mySQL 约束 (Constraints):一、非空约束 NOT NULL 约束
  20. ps中的栅格化--引出--矢量图

热门文章

  1. Oracle的dual是什么东西啊
  2. 全面解读Python Web开发框架Django,利用Django构建web应用及其部署
  3. python中使用指定GPU
  4. PyTorch官方中文文档:torch.optim 优化器参数
  5. html手机端全屏显示和溢出问题
  6. seo优化:302跳转变为301跳转
  7. java Math和Random和UUID
  8. Python--day44--navicat使用(知道怎么用就好,要用终端操作,用这个会被人鄙视)
  9. vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)
  10. 关于axios的一些封装