QLable的“超链接”形式

来源:互联网 发布:windows7优化大师软件 编辑:程序博客网 时间:2024/05/18 22:53

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

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


头文件MyLabel.h:

#ifndef MYLABEL_H#define MYLABEL_H#include <QLabel>class MyLabel : public QLabel{Q_OBJECTpublic: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 0
原创粉丝点击