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