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文件中实现函数就好了

时间: 2024-07-29 00:39:25

Qt自定义标签按钮的相关文章

Java web自定义标签按钮级别权限控制完美诠释(jplogic 快速开发平台)

接下来跟大家聊聊JavaWeb中权限控制,往大的方向说可以聊聊整合应用系统中的权限控制.在聊权限控制之前先跟大家聊聊RBAC.那么什么是RBAC呢?RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联的,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色.角色可依新的需求和系统的

5.Qt自定义Button按钮的实现

 1.编写自定义按钮 MyButton.h #ifndef MYBUTTON_H #define MYBUTTON_H #include <QWidget> /** * @brief The MyButton class * 如果想重写button,需要继承QWidget */ class MyButton : public QWidget { Q_OBJECT public: explicit MyButton(QWidget *parent = 0); //重写MyButton的构造函

同一Page范围内多个相同自定义标签类实例化个数相关问题阐述

问题描述:(jsp自定义标签代码片段中出现出来多个相同类型的标签<JB:ToobarCellComponent.那么jsp引擎是否实例化多个标签对象呢)那么大家可能就奇怪了,研究这个问题到底对我们项目研发有何好处呢?其实这个问题可以延伸出很多关于java自定义标签的一些高级应用以及自定义标签的解析原理,比如自定义标签按钮级别的权限控制[页面控件权值记录,初始化等]等.研究这些设计框架大有所益处,以下内容但愿对你有所帮助.也欢迎大家进入群[376447127]与我交流RAD快速开发平台相关技术.

zTree更新自定义标签&gt;&gt;&gt;

zTree>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> x 本来想自己敲一个zTree的例子的>>> 但是一想zTree文档做的这么好,直接拷贝过来一个得了... 哈哈>>> <!DOCTYPE html> <html> <head> <

自定义标签-自定义注解

首先是4个自定义注解类StaticResourceType.java public enum StaticResourceType { LESS,CSS,JS} StaticResource.java @Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface StaticResource { StaticResourceType type(); String path(); Dependenc

Qt自定义菜单项

经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗.QQ.360都有类似菜单,对于常规的菜单项,图标 + 文字 实现一个事件,很容易完成,那么怎么自定义菜单项呢? Qt提供了支持,就是利用QWidget + QWidgetAction来完成.QWidgetAction继承自QAction,无法通过继承来实现一个界面,但它提供了setDefaultWidget来绑定一个界面,使用起来就更加方便了. 下面实现一个没有Action的菜单,并通过按钮显示出来: void UserMenu::Creat

UIkit框架(14)自定义标签控制器

自定义UITabBarController子类 UITabBarController的tabBar往往不能满足我们的需求 通过自定义UITabBarController子类自定义标签栏是经常采用的方式. 基本步骤: 1)定义UIButton子类作为标签按钮 2)定义模型类,管理每个页面的控制器以及对应标签栏上的数据 3)自定义标签栏 4)定义UITabBarController子类 定义标签按钮 添加两种创建方法:只显示图片和文字图片都显示的 + (AMTabBarButton *)tabBar

QT自定义精美换肤界面

陆陆续续用QT开发过很多项目,也用QT写过不少私活项目,也写过N个工具,一直梦寐以求能像VC一样可以很方便的有个自定义的界面,QSS的强大让我看到了很好的希望,辗转百度谷歌无数次,一直搜索QT相关的换肤文章,绝大部分的是一些简单的按钮文本样式,要做到整体换肤程度几乎不行,QTCN论坛里的奋斗的孩子写了个模仿360安全卫士系列,让我既惊喜有遗憾,惊喜的是能够用QT实现一个这么完整的360安全卫士界面,确实不错,也支持多种换肤,遗憾的是我下载过的是VC版本的,对于一直执着于用Qt Creator 来

两种方式自定义标签工具栏

在AppDelegate.m中设置根视图控制器 MainTabbarController.h @interface MainTabbarController : UITabBarController { UIImageView *_selectedImg; UIView *_tabbarView; } - (void)showtabbar:(BOOL)show; MainTabbarController.m #import "MainTabbarController.h" #impor