一般说只在button中点击获得事件,作出相应的反应。而往往需要在QLabel上作出点击和触碰的效果。

我用qlabel做出了一个效果,当鼠标碰到label区域,label底下出现一条线,离开后线条消失。当点击label后变颜色

以下是我的代码

// label.h

#include<QLabel>
classlabel:publicQLabel
{
Q_OBJECT
public:
explicitlabel(QStringstr,QWidget*parent=0);
virtualvoidmousePressEvent(QMouseEvent*event);
voidmouseReleaseEvent(QMouseEvent*event);
voidenterEvent(QEvent*);
voidleaveEvent(QEvent*);
intcount;
voidpaintEvent(QPaintEvent*event);
boolover;
boolpress;
signals:
//自定义clicked()信号,在mousePressEvent事件发生时触发
voidclicked();
publicslots:
voidchange_color();
};

//label.cpp

#include"label.h"
#include<QMouseEvent>
#include<QPainter>
#include<QPalette>
label::label(QStringstr,QWidget*parent):
QLabel(parent)
{
QPalettepalette;
palette.setColor(QPalette::WindowText,QColor(50,255,255));
this->setText(str);
this->setPalette(palette);
setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
//this->setStyleSheet("background-color:blue");
this->setCursor(Qt::PointingHandCursor);
count=0;
press=false;
over=false;
connect(this,SIGNAL(clicked()),this,SLOT(change_color()));
}
voidlabel::mousePressEvent(QMouseEvent*event)
{
//如果单击了就触发clicked信号
if(event->button()==Qt::LeftButton)
{
//触发clicked信号
count++;
press=true;
emitclicked();
}
//将该事件传给父类处理
QLabel::mousePressEvent(event);
}
voidlabel::mouseReleaseEvent(QMouseEvent*event)
{
press=false;
update();
}
voidlabel::enterEvent(QEvent*)
{
over=true;
update();
}
voidlabel::leaveEvent(QEvent*)
{
over=false;
update();
}
voidlabel::change_color()
{
if(count%2)
this->setStyleSheet("background-color:red");
else
this->setStyleSheet("background-color:blue");
}
voidlabel::paintEvent(QPaintEvent*event)
{
QPainterpaint(this);
paint.setPen(QPen(Qt::yellow,1));
if(over)
{
paint.drawLine(5,this->height()-5,this->width()-5,this->height()-5);
}
else
{
paint.setPen(Qt::NoPen);
}
QLabel::paintEvent(event);
}
//MainWindow.h
#include<QWidget>
#include"label.h"
classMainWindow:publicQWidget
{
Q_OBJECT
public:
label*la;
explicitMainWindow(QWidget*parent=0);
~MainWindow();
};
//MainWindow.cpp
#include"mainwindow.h"
#include<QLabel>
MainWindow::MainWindow(QWidget*parent):
QWidget(parent)
{
setFixedSize(200,100);
la=newlabel("192.168.199.245",this);
la->setGeometry(50,30,100,30);
}
MainWindow::~MainWindow()
{
}
//main.cpp
#include"mainwindow.h"
#include<QApplication>
intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);
MainWindoww;
w.show();
returna.exec();
}
仅供初学者参考

在QLabel上点击获得的效果相关推荐

  1. Qt实现在QLabel上显示图片并进行线条/矩形框/多边形的绘制

    文章目录 前言 一.事件过滤器 二.示例完整代码展示 三.下载链接 总结 前言 本文主要讲述了使用QPainter在QLabel上进行图片的显示,并使用事件过滤器让QLabel捕获QEvent::Pa ...

  2. ios 点击出现另外一套tabbar_iOS开发中TabBar再次点击实现刷新效果

    需求 之前已经实现了自定义TabBar,如图所示: 自定义TabBar.jpeg 现在需要实现一个类似今日头条TabBar的功能 -- 如果继续点击当前TabBar的选中项,那么该界面需要刷新UITa ...

  3. php+jquery实现图片上传预览_和拖动位置值,PHP教程:thinkphp jquery实现图片上传和预览效果...

    <PHP教程:thinkphp jquery实现图片上传和预览效果>要点: 本文介绍了PHP教程:thinkphp jquery实现图片上传和预览效果,希望对您有用.如果有疑问,可以联系我 ...

  4. android 评论的展开功能,Android开发实现ListView点击展开收起效果示例

    本文实例讲述了Android开发实现ListView点击展开收起效果.分享给大家供大家参考,具体如下: 废话不说先上效果: 实际上这是采用一个ExpandableListView实现的 布局文件很简单 ...

  5. 已解决:fastclick插件在IOS系统上点击input需要双击或长按才有效

    已解决:fastclick插件在Vue移动端IOS系统上点击input需要双击或长按才有效 做Vue项目的登录注册页面测试时发现的问题,Chrome浏览器上使用三星手机Glaxy S5测试input是 ...

  6. 如何用html制作一个动态烟花,视频加烟花特效 视频如何制作烟花效果|视频上添加动态的焰火效果...

    有句mmp不知当讲不当讲,今天竟然是孔子的诞辰,这样一算孔子很有可能是处女座呢!!当看到这条消息时我的内心是拒绝的,在我看来孔子的中庸思想表示的"平庸.折中.调和"明明是我们天秤座 ...

  7. android水波纹动画制作,Framer之事件 | 如何制作安卓点击水波纹效果?

    之前的 Framer 教程都是按照个人喜好去写的,没有按照难易程度形成系列.为了让大家能更好地入门,我准备由易到难写一个系列教程,尽量保持在每周一篇的频率. 导读:事件是 Framer 中的一个重要概 ...

  8. 获取手机屏幕上点击位置的坐标

    获取手机屏幕上点击位置的坐标 在手机开发者选项中,打开指针位置,可以在屏幕上方获取当前点击位置的坐标点(X,Y) P:1/1  X:553  Y:1851  Xv:0:0  Yv:0:0 Prs:1. ...

  9. Pr剪辑上分攻略 -- 文字效果

    Pr中添加文字效果的方式有很多,这里列举几个常用的(我所掌握的)方式. 输入文字 在预览面板上,点击快捷键 T [英文输入法],或在时间轴面板上点击左边工具最下角的文字工具,即可在指定位置输入文字:如 ...

最新文章

  1. 鸿蒙系统合适上线手机端,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
  2. 12864输出字符c语言,大家看看该怎么改才能让12864液晶显示屏显示21个字符啊?...
  3. html 右下角弹窗,javascript实现的右下角弹窗实例
  4. SQL SERVER 2008清理日志
  5. 使用Spring的缓存管理器缓存Web内容
  6. 爬虫-大招-自动化测试工具上演
  7. Pentium II Pentium III架构/微架构/流水线 (7) - 微架构框图
  8. WebAPI PUT,DELETE请求404
  9. 基于jdk proxy的动态代理模式
  10. mysql的sqlhelper_SqlHelper
  11. Beaglebone Black 和树莓派
  12. 思科640-816最新认证资料-Pass4side权威考题大师提供
  13. win10无线显示未连接到服务器,win10突然无法连接到无线显示器
  14. Codeforces 30 E. Tricky and Cleve Password
  15. Python实现逻辑回归
  16. 区块链和区块链联盟_您可能对区块链有误解。 让我来帮助您修复它们。
  17. 数据库课设:java实现的本地电脑专卖店管理系统
  18. OpenGL: 混合
  19. 同为(TOWE)携手某防化研究所共筑防雷安全体系
  20. (精华)2020年8月7日 微信小程序 实时音视频通话

热门文章

  1. 电脑硬盘数据线_这40种电脑故障的排除技巧你都掌握了吗?
  2. cad镜像后标注尺寸数字反了_CAD画法大全
  3. 图像分块matlab程序,图像分块 matlab程序
  4. 外星人装深度linux,外星人alienware 18笔记本怎么安装win10系统
  5. jQuery.noop()方法
  6. Z-BlogPHP 1.7 Tenet 正式版源码
  7. HTML粘性滑块导航源码-可用来做首页
  8. ASP.NET Web API的Controller是如何被创建的?
  9. Google Webmaster Tools 结构化数据标记使用入门指南
  10. magento 添加facebook like 和google +1 按钮