qt自定义标签,Qt自定义标签按钮

Qt自定义标签按钮,qt自定义标签

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

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

在你的Qt工程中

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

在ClickedLabel.h中

 1 #ifndef CLICKEDLABEL_H
 2 #define CLICKEDLABEL_H
 3 
 4 #include <QLabel>
 5 //夜潇:17/06/04
 6 class ClickedLabel : public QLabel
 7 {
 8     Q_OBJECT
 9 public:
10     ClickedLabel( QWidget* parent = 0);
11     int MyLabelPressed;
12     void mousePressEvent(QMouseEvent *e);//添加鼠标响应事件
13     void mouseReleaseEvent(QMouseEvent *e);//添加鼠标释放事件
14 signals:
15     void clicked();//点击信号
16 
17 };
18 
19 #endif // CLICKEDLABEL_H

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

 1 #include "clickedlabel.h"
 2 
 3 ClickedLabel::ClickedLabel(QWidget* parent) : QLabel(parent)
 4 {
 5     setText("作者:夜潇!");  //添加标签默认文本
 6     setAlignment(Qt::AlignCenter);  //设置默认对齐方式:中心对齐(居中)
 7     //设置默认标签风格
 8     setStyleSheet("ClickedLabel { background-color: rgb(143,122,102); border-radius: 10px; font: bold; color: white; }");
 9     MyLabelPressed = 0;
10 }
11 
12 void ClickedLabel::mousePressEvent ( QMouseEvent * e )
13 {
14     MyLabelPressed = 1;
15 }
16 
17 void ClickedLabel::mouseReleaseEvent ( QMouseEvent * e )
18 {
19     if(MyLabelPressed)
20     {
21         emit clicked();
22         MyLabelPressed = 0;
23     }
24 }

然后在你的Qt工程中

添加头函数:#include “clickedlabel.h”

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

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

当你接触到Qt时,你会为它极为方便的跨平台方面感到吃惊,从而想尝试着使用Qt。渐渐地你会发现Qt自带…

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

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

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

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

在你的Qt工程中

在你的Qt工程中

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

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

在ClickedLabel.h中

在ClickedLabel.h中

 1 #ifndef CLICKEDLABEL_H
 2 #define CLICKEDLABEL_H
 3 
 4 #include <QLabel>
 5 //夜潇:17/06/04
 6 class ClickedLabel : public QLabel
 7 {
 8     Q_OBJECT
 9 public:
10     ClickedLabel( QWidget* parent = 0);
11     int MyLabelPressed;
12     void mousePressEvent(QMouseEvent *e);//添加鼠标响应事件
13     void mouseReleaseEvent(QMouseEvent *e);//添加鼠标释放事件
14 signals:
15     void clicked();//点击信号
16 
17 };
18 
19 #endif // CLICKEDLABEL_H
 1 #ifndef CLICKEDLABEL_H 2 #define CLICKEDLABEL_H 3  4 #include <QLabel> 5 //夜潇:17/06/04 6 class ClickedLabel : public QLabel 7 { 8     Q_OBJECT 9 public:10     ClickedLabel( QWidget* parent = 0);11     int MyLabelPressed;12     void mousePressEvent(QMouseEvent *e);//添加鼠标响应事件13     void mouseReleaseEvent(QMouseEvent *e);//添加鼠标释放事件14 signals:15     void clicked();//点击信号16 17 };18 19 #endif // CLICKEDLABEL_H

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

之后在ClickedLabel.cpp中的构造函数中设置默认风格,给MyLabelPressed
附一个初值0;

 1 #include "clickedlabel.h"
 2 
 3 ClickedLabel::ClickedLabel(QWidget* parent) : QLabel(parent)
 4 {
 5     setText("作者:夜潇!");  //添加标签默认文本
 6     setAlignment(Qt::AlignCenter);  //设置默认对齐方式:中心对齐(居中)
 7     //设置默认标签风格
 8     setStyleSheet("ClickedLabel { background-color: rgb(143,122,102); border-radius: 10px; font: bold; color: white; }");
 9     MyLabelPressed = 0;
10 }
11 
12 void ClickedLabel::mousePressEvent ( QMouseEvent * e )
13 {
14     MyLabelPressed = 1;
15 }
16 
17 void ClickedLabel::mouseReleaseEvent ( QMouseEvent * e )
18 {
19     if(MyLabelPressed)
20     {
21         emit clicked();
22         MyLabelPressed = 0;
23     }
24 }
 1 #include "clickedlabel.h" 2  3 ClickedLabel::ClickedLabel(QWidget* parent) : QLabel 4 { 5     setText("作者:夜潇!");  //添加标签默认文本 6     setAlignment(Qt::AlignCenter);  //设置默认对齐方式:中心对齐 7     //设置默认标签风格 8     setStyleSheet("ClickedLabel { background-color: rgb(143,122,102); border-radius: 10px; font: bold; color: white; }"); 9     MyLabelPressed = 0;10 }11 12 void ClickedLabel::mousePressEvent ( QMouseEvent * e )13 {14     MyLabelPressed = 1;15 }16 17 void ClickedLabel::mouseReleaseEvent ( QMouseEvent * e )18 {19     if(MyLabelPressed)20     {21         emit clicked();22         MyLabelPressed = 0;23     }24 }

然后在你的Qt工程中

然后在你的Qt工程中

添加头函数:#include “clickedlabel.h”

添加头函数:#include “clickedlabel.h”

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

添加私有函数或者公共函数:ClickedLabel *Btn1;

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

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