Qt利用代码实现流水灯的效果

用代码实现流水灯的效果

其实很想实现这种流水灯的效果了,看起来挺酷的,用处也很多,只是开始没有思路不知道怎么去实现,于是在我的超市收银项目中就采用了图片加载的方式进行显示,效果如下图所示:

由于是动态图片,显示的时候就要用到QMovie进行加载,简单的代码如下所示:

    QMovie *move = new QMovie(":/images/splash.gif");
    QLabel *label = new QLabel("",0);
    label->setWindowIcon(QIcon(":/images/main.png"));
    label->setAttribute(Qt::WA_TranslucentBackground,true);//窗体背景透明
    label->setGeometry(510,300,450,100);
    label->setMovie(move);
    move->start();
    label->setWindowFlags(Qt::FramelessWindowHint);
    label->show();

利用动态图片工具制作自己想要的图片,在需要进行加载的时候进行显示即可。这个办法很简单,但是很麻烦,不通用,如果需要显示的字符不一样,就得制作另一张图片了,费时费力。果断放弃。

另一种方式是直接用代码实现,简单快捷、很通用。效果如下图所示:

说明此方法是参考别人的。博客地址:http://blog.sina.com.cn/s/blog_a6fb6cc90102vcdn.html

基本思想是每隔500毫秒显示字符串的变化,时间可以用定时器进行设置,代码如下所示:

设置窗体透明

    this->setWindowFlags(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);//窗体背景透明

添加label用于显示文字并对文字设置简单的效果:

    this->m_scrollCaptionLabel = new QLabel(this);
    this->m_scrollCaptionLabel->setToolTip("模拟流水灯效果");
    this->m_scrollCaptionLabel->setFont(QFont("Times",30,QFont::Bold));
    this->m_scrollCaptionLabel->setStyleSheet("color: blue;");

实现部分:

    m_scrollCaptionStr = QString("欢迎加入我们:技术在于分享、交流 936563422");
    QTimer *m_timer = new QTimer(this);
    QObject::connect(m_timer,SIGNAL(timeout()),this,SLOT(slot_scrollCaption()));
    QObject::connect(this->m_quitButton,SIGNAL(clicked()),this,SLOT(close()));
    m_timer->start(500);

槽函数实现部分:

  void Widget::slot_scrollCaption()
  {
      static int nPos = 0;

      if (nPos > m_scrollCaptionStr.length())
      {
          nPos = 0;
      }

      this->m_scrollCaptionLabel->setText(this->m_scrollCaptionStr.mid(nPos));
      ++nPos;
  }

效果看起来挺不错的,以后可以用在某些特定的场合,多谢“一去二三里”了,在此感谢你……

技术在于分享、交流……

Email: [email protected]

QQ:936563422

时间: 2024-10-22 11:06:09

Qt利用代码实现流水灯的效果的相关文章

[51单片机] EEPROM 24c02 [I2C代码封装-保存实现流水灯]

这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC >_<:i2c.c 1 /*----------------------------------------------- 2 名称:IIC协议 3 内容:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 4 周期,即晶振频率要小于12MHZ) 5 ---------------------------------------

AVR第4课:流水灯

代码:流水灯程序. /* *info:led flow *author:chenlu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BIT(x) #include<iom16v.h> #include<macros.h> //use those can make your

51单片机第一弹---流水灯

转行搞硬件..acm算是走到头了,毕竟电子是自己专业的特色.. 初撸单片机,买的板子是STC89C52(某宝58大洋淘来的..) 郭天祥新概念的那本书(好像有点不配套不过凑活着弄了也..) 说一下容易犯的错误吧. 1.串口驱动搞了1个多小时..一直安装不上,后来跟着教程做的 2.书上写的控制LED端口的是P1 ,但实际上买的这快板子是P2 ,最开始搞了半天老是点不亮灯,后来一想会不会端口错了,换成0试试?换了不行,又换了2..亮了(这是个问题,以后要找学长问问,怎么根据开发板看出来每个模块的端口

Tiny4412汇编流水灯代码,Tiny4412裸机LED操作[1]

从今天开始就正式进入到tiny4412的开发学习中了,今天主要看了一下Tiny4412的启动流程及存储器映射及Exynos4412数据手册,用汇编写了一个跑马灯程序(后续会有C语言版本的出来),先说一下我的开发环境吧: 开发板:Tiny4412 增强版 (底板是Tiny4412ADK 1312) 开发工具:UltraEdit 宿主机:VmWare Ubuntu12.04(64bit) 编译工具:arm-linux-gcc4.5.1 为了便于分类管理,特意开了一个Tiny4412学习专区,希望对大

FPGA流水灯实验

源代码下载地址: http://pan.baidu.com/s/14H8D4 FPGA流水灯实验 花了几天通过流水灯实验把学习的verilogHDL的建模技巧总结了一下.写一份总结,给自己制定一套规范,方便以后查看和解决问题. 实现目标: 通过流水灯的实验实现了串行工作,流水线工作(时间并行),并行流水线工作(空间并行).串行工作是CPU的工作方式,也就是一个时间只能做一件事.通过verilogHDL完全可以模仿这种工作方式,也就是说通过CPU实现的算法和驱动程序完全可以转换成对应的verilo

四位流水灯Led_4

流水灯实验是我们学习开发板或语言的入门程序,通过流水灯这个可视化的实验,会增加我们对学习语言的乐趣, 会让我们觉得其实语言也是可以玩出花样的,接下来呈上代码,大家可以下到自己的板子里试试,. //Led_4.v module Led_4(clk,rst,led); input clk; input rst; output [3:0] led; reg [3:0] led; always @(posedge clk or negedge rst) begin if(!rst) begin led

基于Qt的类似QQ好友列表抽屉效果的实现

前段时间在忙毕业设计,所以一直没有更新博客.今天答辩完以后,将对我的毕业设计进行模块展示,供Qt初学者进行参考. 毕业设计题目:Linux系统下基于Qt的局域网即时通信系统设计与实现 其中我有一个类似于QQ的好友列表,然后对好友可以进行分组管理,毕设中具体效果图如下: 网上查寻到的设计思路: 1.采用QToolBox的方式,虽然看起来有点样子,但是并不是我们所熟悉的好友列表,比如:http://blog.csdn.net/qianguozheng/article/details/6719074

一步步玩pcduino3--mmc下的裸机流水灯

第一部分是玩pcduino3下的裸机,这个过程可以让我们更好的理解嵌入式系统,熟悉我们使用的这个平台. 首先介绍下开发环境: 虚拟机:VMware? Workstation 10.0.2 build-1744117 系统:Linux slackware 3.2.29-smp #2 SMP 交叉编译器:arm-linux-gnueabihf-    版本号:gcc version 4.8.2 20130805 (prerelease) (crosstool-NG linaro-1.13.1-4.8

3. 戏说VHDL之入门游戏一:流水灯

一.   流水灯 1.1流水灯原理 流水灯是每个学电子的入门“游戏” ,示意图如图1,其原理极其简单,但是可玩性却极强,可以就8个LED写出不同花样的程序.在1.2中我们列出两个不同思路的代码作为VHDL的入门例程. 图1 流水灯电路图 1.2 流水灯例程 这里提供两个不同的代码. 第一个代码的思路是先对系统时钟分频,产生1s信号(即变量count取值到25000000,这样分频时间=20ns*25000000*2=1s),然后使用移位操作符指令进行操作.该指令是在VHDL93中引入的,包括sl