Qt自定义标签按钮

当你接触到Qt时,你会为它极为方便的跨平台方面感到吃惊,从而想尝试着使用Qt。渐渐地你会发现Qt自带的一些控件不能满足自己的需要,此时就需要我们自己定义一个属于自己的控件。总所周知,标签的风格设置类比较多,但默认的标签没有鼠标响应事件。

今天,给大家带来的是:标签按钮类。从名字就可以看出,将标签修改成按钮,从而让标签具有按钮鼠标的响应功能。

在你的Qt工程中

添加新文件:C++ Class,输入类名:ClickedLabel ,基类:QLabel。Qt会自动生成ClickedLabel.h和ClickedLabel.cpp文件。

在ClickedLabel.h中

 #ifndef CLICKEDLABEL_H
#define CLICKEDLABEL_H #include <QLabel>
//夜潇:17/06/04
class ClickedLabel : public QLabel
{
Q_OBJECT
public:
ClickedLabel( QWidget* parent = );
int MyLabelPressed;
void mousePressEvent(QMouseEvent *e);//添加鼠标响应事件
void mouseReleaseEvent(QMouseEvent *e);//添加鼠标释放事件
signals:
void clicked();//点击信号 }; #endif // CLICKEDLABEL_H

之后在ClickedLabel.cpp中的构造函数中设置默认风格(注:可以不写),给MyLabelPressed 附一个初值0;

 #include "clickedlabel.h"

 ClickedLabel::ClickedLabel(QWidget* parent) : QLabel(parent)
{
setText("作者:夜潇!"); //添加标签默认文本
setAlignment(Qt::AlignCenter); //设置默认对齐方式:中心对齐(居中)
//设置默认标签风格
setStyleSheet("ClickedLabel { background-color: rgb(143,122,102); border-radius: 10px; font: bold; color: white; }");
MyLabelPressed = ;
} void ClickedLabel::mousePressEvent ( QMouseEvent * e )
{
MyLabelPressed = ;
} void ClickedLabel::mouseReleaseEvent ( QMouseEvent * e )
{
if(MyLabelPressed)
{
emit clicked();
MyLabelPressed = ;
}
}

然后在你的Qt工程中

添加头函数:#include "clickedlabel.h"

添加私有函数(private)或者公共函数(public):ClickedLabel *Btn1;

之后再工程文件的CPP文件中实现函数就好了

上一篇:vscode如何设置文本高亮


下一篇:java并发编程(二十六)——单例模式的双重检查锁模式为什么必须加 volatile?