當前位置:網站首頁>Qt給靜態屏保加上粒子特效
Qt給靜態屏保加上粒子特效
2022-01-27 13:10:12 【菜鳥清清】
最近正在開發一個系統,有時我覺得常用的靜態屏保頁面太單調了,想加入一些動態的要素。然後就發現了Qt有一個粒子特效的系統,但是需要用到Qml,而我的系統是用QWidget開發的,沒辦法直接用Qml…
但是Qt也想到了這一點,官方提供了一個叫做quickwidgets的模塊,通過它就可以在QWidgets裏嵌入動態的Qml頁面。
基於此,我們開始逐步改寫。
一、添加quickwidgets模塊
QT += quickwidgets
二、編寫qml頁面
這裏采用的方案是在qml中顯示原來的靜態圖片,並在其上添加粒子特效。使用粒子特效需引用QtQuick.Particles這個包。
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Particles 2.0
import QtGraphicalEffects 1.0
Rectangle {
id: root
x: 0 // 右上角橫坐標,缺省為0
y: 0 // 右上角縱坐標,缺省為0
width: 800 // 寬度,缺省為0,其子對象仍會顯示(相對於0)
height: 1280 // 高度,缺省為0,其子對象仍會顯示(相對於0)
z: 1 // 顯示順序,同一層的元素,越大越在上面
Image {
id: bg
source: "qrc:/images/screen"
width: parent.width
height: parent.height
visible: true
}
ParticleSystem {
id: particleSystem
}
Emitter {
id: emitter
anchors.centerIn: parent
x: 0
y: 400
width: 800
height: 880
system: particleSystem
emitRate: 4
lifeSpan: 2000
lifeSpanVariation: 500
size: 5
endSize: 20
sizeVariation: 5
}
ImageParticle {
system: particleSystem
source: "qrc:/images/star"
color: "#0D9EED"
colorVariation: 0.6
rotation: 15
rotationVariation: 5
rotationVelocity: 45
rotationVelocityVariation: 15
entryEffect: ImageParticle.Scale
}
}
代碼搭建在Rectangle上,它類似於QWidgets中的label,此處不能使用Window,否則qml頁面將在獨立的窗口中顯示。
Image控制圖片顯示,相當於setIcon。長度和寬度都選擇填滿。
聲明了一個ParticleSystem並命名,在其上添加了發射器Emitter和圖像粒子ImageParticle,通過二者的共同作用,構造初想要的粒子效果。
此處的效果為星光在畫面隨機比特置緩慢亮起,又緩慢黯淡。
三、將qml嵌入QWidgets中
首先將需要的qml放入我們的qrc資源中。
然後在屏保頁頭文件中引入:
#include <QtQuickWidgets>
最後在原來屏保畫面的比特置,用如下代碼替換。
QQuickWidget *m_quickWidget = new QQuickWidget(this);
QUrl source("qrc:/screen.qml");
m_quickWidget -> setSource(source);
最後調試,如果環境配置正確,就可以看到動態的顯示效果了。
版權聲明
本文為[菜鳥清清]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201271310116068.html
邊欄推薦
猜你喜歡
隨機推薦
- uniapp上傳圖片及組件傳值
- 瑞利年金險資金保障安全嗎?收益高不高啊?
- 華為手機USB連不上電腦的解决方法
- Flutter 2,移動金融應用開發
- 關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結
- 關於用ffmpeg轉手機視頻發現視頻長寬倒了的問題
- 函數 / 類模板--模板2
- 數組中的第k個最大的元素--優先級隊列、排序、堆、排序
- 單片機實例27——ADC0809A/D轉換器基本應用技術(硬件電路圖+匯編程序+C語言程序)
- Collection集合的學習
- 一場面試結束,某度員工從事Android 5年為何還是初級工程師?
- 3本書閱讀筆記【人月神話-Go語言實戰-研發能力持續成長路線】01
- PHP垃圾回收機制
- 【電子技術】什麼是LFSR?
- 死鎖?如何定比特到死鎖?如何修複死鎖?(jps和jstack兩個工具)
- 快樂寒假 22/01/20
- image
- 噴程序員?SURE?
- LDO分壓電阻計算小工具
- 面試之求一串字符串中每個字符的出現次數
- 【ISO15765_UDS&OBD診斷】-01-概述
- 【Mysql上分之路】第九篇:Mysql存儲引擎
- RHCE 第一次作業
- 2021.10.16我的第一篇博客:一切皆有可能!
- CTA-敏感行為-讀取IMEI
- 面試被問怎麼排查平時遇到的系統CPU飆高和頻繁GC,該怎麼回答?
- nuxt項目總結-綜合
- 自然語言處理學習筆記(一)
- C語言第一課
- 各比特大佬,Spark的重點難點系列暫時更新完畢
- 基於 esbuild 的 universal bundler 設計
- XCTFre逆向(四):insanity
- 理解什麼是真正的並發數
- JVM腦圖
- 【Pytorch(四)】學習如何使用 PyTorch 讀取並處理數據集
- 函數棧幀的創建與銷毀
- 構建神經網絡- 手寫字體識別案例
- 多模態生成模型ERNIE-VILG
- kotlin不容忽視的小細節
- 備戰一年,終於斬獲騰訊T3,我堅信成功是可以複制的