• Qt自定义标签按钮


    当你接触到Qt时,你会为它极为方便的跨平台方面感到吃惊,从而想尝试着使用Qt。渐渐地你会发现Qt自带的一些控件不能满足自己的需要,此时就需要我们自己定义一个属于自己的控件。总所周知,标签的风格设置类比较多,但默认的标签没有鼠标响应事件。

    今天,给大家带来的是:标签按钮类。从名字就可以看出,将标签修改成按钮,从而让标签具有按钮鼠标的响应功能。

    在你的Qt工程中

    添加新文件:C++ Class,输入类名:ClickedLabel ,基类:QLabel。Qt会自动生成ClickedLabel.h和ClickedLabel.cpp文件。

    在ClickedLabel.h中

     1 #ifndef CLICKEDLABEL_H
     2 #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文件中实现函数就好了

  • 相关阅读:
    SWT中如何居中显示?
    项目一 默认构造函数和带参数的构造函数
    解决ubuntu中java1.6显示中文乱码问题
    网络程序为什么要处理SIGPIPE
    SQL 数据类型大全
    poj1275 差分约束
    Oracle分组
    Android利用ViewPager实现滑动广告板
    扩展spring mvc的拦截器,实现AOP的环绕增加效果
    [Ext.Net]GridPanel之存储过程分页Sql版本
  • 原文地址:https://www.cnblogs.com/CLXiao-1029/p/6992230.html
Copyright © 2020-2023  润新知