大家都知道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
