QLable的“超链接”形式

使用QLabel时,想让其能够像Web中的超链接的样式(下划线、字体颜色),并能够进行点击触发相应的信号。但是查看帮助发现原生的QLabel很难满足需求,所以觉得自定义一个MyLabel类继承并扩展QLabel。

直接将代码贴上来,方便日后自己查找和利用。


头文件MyLabel.h:

#ifndef MYLABEL_H
#define MYLABEL_H

#include <QLabel>

class MyLabel : public QLabel
{
	Q_OBJECT

public:
	MyLabel(QWidget *parent=0);
	MyLabel(const QString &text,QWidget *parent=0);
	~MyLabel();

private:
	QString m_str;
	bool isClicked;

protected:
	void mousePressEvent(QMouseEvent *ev);
	void mouseMoveEvent(QMouseEvent *ev);
	void mouseReleaseEvent(QMouseEvent *ev);

signals:
	void Clicked();  
};

#endif // MYLABEL_H 


cpp文件:

#include "MyLabel.h"

MyLabel::MyLabel(QWidget *parent)
	: QLabel(parent)
{
	
}
MyLabel::MyLabel(const QString &text,QWidget *parent): QLabel(parent)
{
	m_str=text;
	QString str="<style> a {text-decoration: underline} </style> <a style='color: blue;' href = > "+m_str+"</a>";
	this->QLabel::setText(str);
}

MyLabel::~MyLabel()
{

}
void MyLabel::mousePressEvent(QMouseEvent *ev)
{
	Q_UNUSED(ev);
	isClicked= true;
}
void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
	Q_UNUSED(ev);
	isClicked= false;
}
void MyLabel::mouseReleaseEvent(QMouseEvent *ev)
{
	Q_UNUSED(ev);
	if(isClicked)
	{
		emit Clicked();
		isClicked = false;
	}
}</span><span style="color:#ff9966;">
</span>

这就是全部代码,并且,还可以将这个自定义的Label应用于各种场合,很方便,也可以嵌入TreeWidget中进行直观的参数设置,后续再进行追加。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值