Qt自定義標簽按鈕
阿新 • • 發佈:2017-06-12
cpp -c mit idg 方便 class als ren 中心
當你接觸到Qt時,你會為它極為方便的跨平臺方面感到吃驚,從而想嘗試著使用Qt。漸漸地你會發現Qt自帶的一些控件不能滿足自己的需要,此時就需要我們自己定義一個屬於自己的控件。總所周知,標簽的風格設置類比較多,但默認的標簽沒有鼠標響應事件。
今天,給大家帶來的是:標簽按鈕類。從名字就可以看出,將標簽修改成按鈕,從而讓標簽具有按鈕鼠標的響應功能。
在你的Qt工程中
添加新文件:C++ Class,輸入類名:ClickedLabel ,基類:QLabel。Qt會自動生成ClickedLabel.h和ClickedLabel.cpp文件。
在ClickedLabel.h中
1 #ifndef CLICKEDLABEL_H2 #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自定義標簽按鈕