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文件中實現函數就好了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM