qt 5 小練習 純代碼制作自定義按鈕


大家都知道QT設計師中直接拖動的按鈕是長方形帶有圓角的圖案,那我們如何來設置自定義按鈕呢

 

 要設計一個按鈕,我們必須要知道按鈕有什么屬性,首先,按鈕必須有一個位置

 第二,按鈕必須有一個名稱。還有當我們點擊按鈕時他會做出什么樣的反應。所以我們定義兩個類,

 

 

 一個QRect _rect; (或者QPoint 更為貼切吧)

 第二個是 QString _text;

 既然有反應,那我們第一想到的就是鼠標事件,添加一個bool _press;

 以及 void mousePressEvent(QMouseEvent *); 和 mouseReleaseEvent(QMouseEvent *);

 

 首先我們需要在構造函數里面初始化位置

 mybutton::mybutton(const QString text,QWidget *parent)      

                                  //構造函數,父類為Widget

 QRect(0,0,90,25);    //  位置為0,0 長度為90,寬度為25

 _text(text);             //   或者 _text = text;                                                       

 

一般情況下我們都在painEvent里面化東西,畫按鈕也是如此,根據你喜歡的樣式而話,例如博主喜歡橢圓。

 void mybutton::painEvent(QPainEvent *)

 {

          QPainter p(this);

          p.drawEllipse(_rect);                    //  有4個參數,分別是位置和長寬,如果長和寬相等就是一個標准的圓了

          p.drawText(_rect,_text,QTextOption(Qt::AlignCenter);

          //設置文本有三個參數,分別是 對象,文本,文本位置

 }

 

如果我們需要鼠標左鍵單擊一下按鈕就變色的話,我們可以通過ture or false來處理

void mybutton::mousePressEvent(QMouseEvent *)

{

     _press = true;

     this->update();             //點擊一下更新一下,調用painEvent

}

void mybutton::mouseReleaseEvent(QMouseEvent *)

{

     _press = false;

     this->update();             //點擊一下更新一下,調用painEvent

}

void mybutton::painEvent(QPainEvent *)

{   

     if(_press ==false)                                                                   

     p.setBrush(Qt::darkYello);        //用畫刷來畫自己喜歡的顏色

  

     else                                                                                               

     p.setBrush(Qt::darkGreen);

}

 

                     

此文章屬於博主原創,如需轉載,請注明出處

作者 : Ten10


免責聲明!

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



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