當你接觸到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檔案中實作函數就好了