亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

Qt 實現桌面雪花飄落代碼

2020-01-26 15:39:05
字體:
來源:轉載
供稿:網友

代碼很簡單, 貼個主要的實現過程吧. 理應支持windows和linux桌面版的, 但是linux下就暫時不測試了. 懶得重啟. 有空測試一下.

系統資源消耗: 我在1.65GHz 雙核CPU, 4G RAM, 32bit Win7 下, 19M左右的內存消耗, 6%-7%左右的CPU消耗.
全部源碼在后面的鏈接.

復制代碼 代碼如下:

#include "widget.h"
#include "ui_widget.h"
#include <QDesktopWidget>
#include <QPalette>
#include <QBrush>

#include <time.h>

#ifdef Q_OS_LINUX
#include <X11/extensions/shape.h>
#endif
#ifdef Q_OS_WIN
#include <windows.h>
#endif

Widget::Widget(QWidget *parent) :
 QWidget(parent),
 ui(new Ui::Widget)
{
 ui->setupUi(this);
 setGeometry(0, 0, qApp->desktop()->width(), qApp->desktop()->height());
 setWindowFlags(windowFlags()
       |Qt::FramelessWindowHint //去邊框
       |Qt::X11BypassWindowManagerHint //linux下脫離任務管理器
       |Qt::WindowStaysOnBottomHint //最低層顯示
       |Qt::Tool //不在任務欄顯示
     );
 setAttribute(Qt::WA_TranslucentBackground);
 setWindowState(Qt::WindowNoState //不激活
       |Qt::WindowFullScreen //全屏
       );
 setFocusPolicy(Qt::NoFocus);
 setWindowOpacity(WINDOW_OPACITY);
#ifdef Q_OS_LINUX
 XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, 0,
        0, NULL, 0, ShapeSet, YXBanded);
#endif
#ifdef Q_OS_WIN
 SetWindowLong(winId(), GWL_EXSTYLE, GetWindowLong(winId(), GWL_EXSTYLE) |
      WS_EX_TRANSPARENT | WS_EX_LAYERED);
#endif
 int i=0;
 pixmapList[i++].load(":/snowIcons/11.png");
 pixmapList[i++].load(":/snowIcons/03.png");
 pixmapList[i++].load(":/snowIcons/06.png");
 pixmapList[i++].load(":/snowIcons/08.png");
 pixmapList[i++].load(":/snowIcons/10.png");
 pixmapList[i++].load(":/snowIcons/12.png");
 pixmapList[i++].load(":/snowIcons/13.png");
 pixmapList[i++].load(":/snowIcons/16.png");
 pixmapList[i++].load(":/snowIcons/17.png");
 pixmapList[i++].load(":/snowIcons/18.png");
 pixmapList[i++].load(":/snowIcons/19.png");

 for(i = 0; i < MAX_PICS; i++)
 {
  picLabel[i] = new QLabel(this);
  picLabel[i]->setGeometry(-128, -128, 64, 64);
 }
 startTimer(150);
}

Widget::~Widget()
{
 delete ui;
}

void Widget::timerEvent(QTimerEvent *e)
{
 const int timeinit = 10;
 static int timeCount = timeinit;
 static int initLabel = MAX_PICS;
 if(--timeCount <= 0)
 {
  qsrand(::time(NULL));
  timeCount = timeinit;
  if(initLabel > 0)
  {
   --initLabel;
   picLabel[initLabel]->move(0, -picLabel[initLabel]->height());
  }
 }
 FlashSnow();
}

void Widget::SetLabelBG(const QPixmap &pixmap, QLabel *label)
{
 if(!label || pixmap.isNull()) return;
 QPixmap map = pixmap.scaled(label->size());
 if(map.isNull()) return;
 label->setPixmap(map);
}

void Widget::FlashSnow()
{
 int i;
 for(i = 0; i < MAX_PICS; i++)
 {
  if(picLabel[i] == NULL) continue;
  if(picLabel[i]->y() == -picLabel[i]->height())
  {
   //resize label
   int size = (qrand()%64)+16;
   picLabel[i]->resize(size, size);

   //init place
   int x = (qrand()%this->width());
   picLabel[i]->move(x, 10-picLabel[i]->height());

   //repaint label's backgroud
   int imgId = (qrand()%MAX_PIXMAP);
   SetLabelBG(pixmapList[imgId], picLabel[i]);
  }
  else
  {
   //snow flow down
   WidgetFlowDown(picLabel[i]);
  }
 }
}

void Widget::WidgetFlowDown(QWidget *widget, bool bRandom)
{
 if(!widget) return;
 int downY = widget->y()+5;
 if(bRandom)
 {
  downY = widget->y()+qrand()%(this->height() - widget->y());
 }
 if(downY > (this->height())) downY = -widget->height();
 widget->move(widget->x(), downY);
}

接下來上個截屏吧:

最后是全部源碼了, 是個Qt creator 工程:
工程壓縮包下載: http://xiazai.VeVB.COm/201312/yuanma/DesktopSnow(VeVB.COm).zip

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品久久久久久777| 成人a视频在线观看| 91精品国产沙发| 久久天天躁狠狠躁夜夜av| 色偷偷亚洲男人天堂| 久久久99免费视频| 国产一区二区三区18| 精品夜色国产国偷在线| 国内精久久久久久久久久人| 黑人欧美xxxx| 高清欧美性猛交xxxx黑人猛交| 久久久av一区| 亚洲一区二区少妇| 欧美在线观看www| 免费97视频在线精品国自产拍| 一区二区三区四区在线观看视频| 国产亚洲视频在线观看| 亚洲视频999| 中文字幕少妇一区二区三区| 亚洲国产精品久久精品怡红院| 一区二区三区视频免费在线观看| 国产成人avxxxxx在线看| 91精品视频在线看| 国产精品扒开腿做爽爽爽视频| 亚洲欧美999| 精品国产乱码久久久久久虫虫漫画| 久久久久国色av免费观看性色| 欧美性色xo影院| 日韩美女在线观看一区| 91在线观看免费| 成人黄色大片在线免费观看| 2018中文字幕一区二区三区| 欧美成人精品影院| 超碰97人人做人人爱少妇| 亚洲理论在线a中文字幕| 欧美日韩ab片| 欧美国产日韩一区二区| 96精品视频在线| 欧美日韩一区免费| 免费91麻豆精品国产自产在线观看| 亚洲欧美日韩精品久久| 中文字幕精品—区二区| 欧美日韩国产精品一区二区不卡中文| 亚洲综合精品伊人久久| 亚洲欧美在线一区二区| 久久6免费高清热精品| 国a精品视频大全| 欧美在线www| 国产精品普通话| 国产精品99导航| 久久久成人精品| 91精品国产电影| 秋霞av国产精品一区| 久久久噜久噜久久综合| 91精品国产高清久久久久久久久| 成人午夜小视频| 欧美成人免费视频| 亚洲香蕉在线观看| 国产精品高潮呻吟视频| 亚洲欧洲第一视频| 亚洲色图欧美制服丝袜另类第一页| 欧美日韩国产精品一区| 日韩一二三在线视频播| 成人午夜高潮视频| 久久久免费在线观看| xvideos成人免费中文版| 中文字幕精品久久久久| 国产成人精品在线| 最近的2019中文字幕免费一页| 欧美性做爰毛片| 红桃av永久久久| 欧美区在线播放| 精品欧美一区二区三区| 日韩精品视频中文在线观看| 992tv成人免费视频| 精品爽片免费看久久| 亚洲精品久久久久久久久久久久久| 欧美性猛交xxxx免费看| 亚洲国产精品成人一区二区| 亚洲美女视频网站| 欧美理论片在线观看| 中文字幕日韩精品在线观看| 国产精品视频最多的网站| 欧美午夜性色大片在线观看| 国产欧美精品日韩| 日韩电影视频免费| 色综合影院在线| 亚洲美女视频网站| 午夜精品福利在线观看| 久久99精品久久久久久青青91| 国产亚洲欧美日韩一区二区| 欧美精品18videos性欧美| 国产精品久久久久久一区二区| 国产精品久久久久免费a∨大胸| 这里只有精品视频| 中文字幕av一区| 97香蕉超级碰碰久久免费的优势| 久久伊人精品一区二区三区| 国内精品在线一区| 欧美日韩中文字幕在线| 91久久国产婷婷一区二区| 亚洲区在线播放| 国产精品999999| 黑人巨大精品欧美一区二区三区| 18久久久久久| 久久国产精品网站| 亚洲精品网站在线播放gif| 日韩中文字幕在线免费观看| 日韩亚洲精品电影| 成人激情春色网| 久久免费成人精品视频| 亚洲天堂2020| 欧美亚洲成人网| 国语自产精品视频在免费| 热久久这里只有| 中文字幕亚洲精品| 久久久久久久电影一区| 欧美成人免费va影院高清| 亚洲精品一区中文字幕乱码| 亚洲人成网在线播放| 国产精品永久免费| 久久精品成人欧美大片| 51色欧美片视频在线观看| 性欧美视频videos6一9| 人人做人人澡人人爽欧美| 一本大道亚洲视频| 亚洲国产欧美一区| 国产成人一区二区| 最新91在线视频| 国产日韩av在线播放| 国产综合久久久久| 国产精品久久久久久久久粉嫩av| 日韩av不卡电影| 亚洲2020天天堂在线观看| 91精品视频在线看| 国产精品久久久久久亚洲影视| 久久夜色精品国产亚洲aⅴ| 久久久久久这里只有精品| 国产欧美 在线欧美| 国内精品久久久久久中文字幕| 国产精品第100页| 亚洲一区二区少妇| 亚洲成人黄色网址| 亚洲国产精品福利| 欧美色欧美亚洲高清在线视频| 午夜精品一区二区三区在线| 黑人巨大精品欧美一区二区一视频| 91精品综合久久久久久五月天| 国产精品自产拍高潮在线观看| 国产精品网站入口| 97视频免费在线看| 欧美日韩在线一区| 欧美裸身视频免费观看| 国产精品久久久久久久久久久久久| 91亚洲国产成人久久精品网站| 国产91精品久久久久| 久久久久久久久久久久av| 日本成人激情视频| 亚洲综合国产精品| 欧美激情免费在线| 国产精品夫妻激情| 91亚洲国产精品| 中文字幕亚洲字幕| 中文字幕亚洲在线|