Qt 鼠标样式特效探索样例(一)——利用时间器调用QWidget.move()函数
效果图

方案要点
实现代码
- #ifndef WIDGET_H
- #define WIDGET_H
- #include <QtGui/QWidget>
- #include <QTimer>
- #include <QList>
- #include <QPoint>
- class Widget : public QWidget
- {
- Q_OBJECT
- public:
- Widget(QWidget *parent = 0);
- ~Widget();
- private:
- QWidget *w1,*w2,*w3,*w4;
- QTimer *timer;
- QList<QPoint> pos_list_w2;
- QList<QPoint> pos_list_w3;
- QList<QPoint> pos_list_w4;
- int count;
- void setMyStyle(QWidget *wid, int w, int h);
- protected:
- void mouseMoveEvent(QMouseEvent *event);
- private slots:
- void updatePos();
- };
- #endif // WIDGET_H
- #include "widget.h"
- #include <QPalette>
- #include <QDebug>
- #include <QMouseEvent>
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- {
- QPalette phome = this->palette();
- phome.setBrush(this->backgroundRole(), QBrush(QPixmap(":/images/bg.jpg")));
- this->setPalette(phome);
- w1 = new QWidget(this);
- w2 = new QWidget(this);
- w3 = new QWidget(this);
- w4 = new QWidget(this);
- setMyStyle(w1,34,34);
- setMyStyle(w2,26,26);
- setMyStyle(w3,18,18);
- setMyStyle(w4,9,9);
- timer = new QTimer(this);
- connect(timer,SIGNAL(timeout()),this,SLOT(updatePos()));
- timer->start(100);
- this->setMouseTracking(true);
- count = 0;
- }
- Widget::~Widget()
- {
- }
- void Widget::setMyStyle(QWidget *wid, int w, int h)
- {
- wid->setWindowFlags(Qt::FramelessWindowHint);
- wid->resize(w,h);
- wid->setStyleSheet("border-image: url(:/images/cursor.png);");
- }
- void Widget::mouseMoveEvent(QMouseEvent *event)
- {
- w1->move(event->x(),event->y());
- if(!count)
- pos_list_w2 << event->pos();
- count > 7 ? (count = 0): count++;
- }
- void Widget::updatePos()
- {
- if(!pos_list_w4.isEmpty())
- {
- this->w4->move(pos_list_w4.takeFirst());
- }
- if(!pos_list_w3.isEmpty())
- {
- pos_list_w4 << pos_list_w3.first();
- this->w3->move(pos_list_w3.takeFirst());
- }
- if(!pos_list_w2.isEmpty())
- {
- pos_list_w3 << pos_list_w2.first();
- this->w2->move(pos_list_w2.takeFirst());
- }
- }
写在最后
Qt 鼠标样式特效探索样例(一)——利用时间器调用QWidget.move()函数的更多相关文章
- 最简单的基于FFmpeg的移动端样例:IOS 推流器
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- VC6 鼠标钩子 最简单样例
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的.而钩子是Windows系统中非常重要的系统接口,用它能够截获并处理送给其它应用程序的消息,来完毕普通应用程序 ...
- PyQt开发样例: 利用QToolBox开发的桌面工具箱Demo
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 toolBox工具箱是一个容器部件,对应类为QToolBox,在其内有一列从上到下顺序排列 ...
- [转] Lodop、C-Lodop使用说明及样例
本文转自:http://www.lodop.net/LodopDemo.html Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现 复杂打印. ...
- WEB打印控件Lodop(V6.x)使用说明及样例
WEB打印控件Lodop(V6.x)使用说明及样例 Lodop是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页. 控件功能强大,却简单易用,所有调用如同JavaScript扩展 ...
- Java 8 时间日期库的20个使用演示样例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...
- 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture)
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- 最简单的基于FFmpeg的移动端样例:Android 视频解码器-单个库版
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- 【spring教程之中的一个】创建一个最简单的spring样例
1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ...
随机推荐
- mysql innodb_double_write特性
知识储备: 1.mysql 的crasy recovery 是通过redo log 和undo log 来完成的: 2.redo log 和undo log的记录的是对页面的物理操作:如在1024号p ...
- Font Rending 的 Hint 机制对排版的影响
Font Rending 的 Hint 机制对排版的影响[转] 在设计一种 Font 时,设计者使用的是一个抽象的单位,叫做 EM,来源于大写 M 的宽度(通常英文字体中大写 M 的宽度最大).EM ...
- ubuntu centos debina
文章目录CentOSDebianCentOS与Debian哪个好?Ubuntu买VPS时有CentOS.Debian.Ubuntu三种操作系统可以选择,Linux下哪种系统更好是很多新人都会遇到的问题 ...
- Java安装根目录
bin存放了Java的操作工具,比如编译工具javac.启动JVM的Java等 db存放了Java测试的数据库Derby,企业不用 include存放C++的头文件 jre运行环境,里面有JVM li ...
- sde需要注意的几个常见问题
Desktop 10.4 是32位的,Server 10.4是64位的,因此位的Oracle客户端,位的Oracle客户端. 如果Desktop和Server安装在同一台机器上,那么Oracle客 ...
- 心急的C小加(两种解法)
心急的C小加 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...
- SQL DCL数据控制语言,用来定义訪问权限和安全级别;
DCL 1. 创建用户 * CREATE USER username@IP地址 IDENTIFIED BY 'password'; > 用户仅仅能在指定的IP地址上登录 * CREATE USE ...
- [记录]关于vertical-align单/多选框与说明文字对齐效果
效果图: 第一张使用label标签,第二张没有使用.. 使用label标签,middle对齐方式的单选框下降了1px 而没有使用label标签,sub对齐方式的 却 居 中 了 =_= 不太理解 ...
- 一些实用的CSS Media Query代码片段,个人采集
CSS3的出现让响应式Web设计变得简单,CSS3提供了强大的media queries,允许你针对不同的条件设置不同的样式,可以在不修改页面内容的情况下,为不同设备提供不同的样式效果. 以下是一些C ...
- PHP学习笔记三
<?php $a=56; $b=++$a; //等价于 $a=$a+1; $b=$a; /////2. $e=false||true;//结果为true $f=false or true;//输 ...