zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    深入理解Guava Cache的refresh和expire刷新机制
    单机、分布式、集群的区别与联系
    理解Word2Vec
    Struts2 XML配置详解
    目标检测中的数据增强方法(附详细代码讲解)
    做笔记就用印象笔记,支持录音做笔记( 附剪藏 插件下载,一键将网页内容保存笔记中进行编辑)
    教你用OpenCV 和 Python给证件照换底色(蓝底 <->红底->白底)
    一招教你如何用Word直接打开PDF进行编辑,无需下载转换软件
    小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练
    小白也能弄懂的目标检测YOLO系列之YOLOV1
  • 原文地址:https://www.cnblogs.com/Ten10/p/Ten15.html
Copyright © 2011-2022 走看看