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