1. 程式人生 > >在QML中滑鼠單擊特殊效果實現示例

在QML中滑鼠單擊特殊效果實現示例

還是借鑑了Qt自帶的掃雷示例中的程式碼!(Qt中的一些程式碼還是有非常好的借鑑意義的,值得學習一下,推薦像我們這種初學者去學習學習!)

首先是效果顯示控制元件:

//Explosion.qml

importQtQuick1.0
importQt.labs.particles1.0
Item{
propertyboolexplode:false
Particles{
id:particles
width:30
height:30
lifeSpan:800
lifeSpanDeviation:0
source:"../Images/star.png"
count:0
angle:270
angleDeviation:360
velocity:100
velocityDeviation:20
z:100
}
states:State{name:"exploding";when:explode
StateChangeScript{script:particles.burst(200);}
}
}

這段基本上就是掃雷應用程式中的照搬下來的!圖片來源自己更改了相對路徑。Particles聲明瞭可以隨機出現指定source的效果。

具體說,就是聲明瞭圖片(source)出現的宣告週期(lifeSpan)以及不同宣告週期之間的差距(lifeSpanDeviation),例如若lifeSpan為800,而lifeSpanDeviation為200,那麼這些圖片就會出現600至1000不等的時間。

角度angle屬性的變化範圍以及速度velocity屬性的變化範圍都依次類推。這個還可以好好再推敲一下。

上述qml的使用就是,放到某個大框(Item或Rectangle等等)裡,然後通過制定出現的x和y為滑鼠區域的mouse.x和mouse.y來實現在滑鼠單擊的時候出現類似於焰火的效果。簡單的使用如下:

Explosion{

id:expl
x:parent.width/2-15
y:parent.height/2-15
}

我這裡是不論滑鼠在哪單擊都從窗體的中心位置顯示這個效果。這裡的15是Explosion的長度的一半,意思是讓Explosion的中心與父Item的中心重合。(就是一個糾正值!)

觸發可以有很多種方式,這裡的觸發方式如下:

Rectangle{

id:content
MouseArea{
anchors.fill:parent
onClicked:{
expl.explode=true
}
onReleased:{
expl.explode=false
}
}

}

其它的程式碼都略去了,具體效果自己也可以多試試。

希望對你有幫助。微笑

補充一句,這個particles出現的效果是隨機的!我還曾經嘗試用這個模擬過下雨,下雪效果,不錯的控制元件!很炫。哈哈

相關推薦

QML滑鼠特殊效果實現示例

還是借鑑了Qt自帶的掃雷示例中的程式碼!(Qt中的一些程式碼還是有非常好的借鑑意義的,值得學習一下,推薦像我們這種初學者去學習學習!) 首先是效果顯示控制元件: //Explosion.qml importQtQuick1.0 importQt.labs.particles

MFC vc++ CTreeContrl如何自定義實現滑鼠或雙擊響應事件 ,即重寫類似於控制元件的響應事件或訊息

目的:自定義修改mfc視窗的FileView中已有的樹結構,而不是新增的樹控制元件 實現的效果如圖:點選“地圖”後彈出框提示,點選響應效果與控制元件的響應事件類似 首先需要重寫CtreeContrl: ① 在CViewTree類的.h標頭檔案中新增程式碼: a

使用Layui實現資料表格滑鼠懸浮圖片放大效果,離開時恢復原圖

var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '<%=path%>/

滑鼠複製貼上標籤的內容

<span ref="spanContentOne" id="spanContentOne" style="font-size: 14px;">或許不是最亮眼,總比瞎買強一點</span> <!--<input type="button" @click="cop

React 實現 antdTable獲取內容

<Table columns={columns} dataSource={data} size="middle" onRow = {(record) => { return { onClick: () => { console

自己寫的滑鼠按鈕實現圖片切換

<!doctype html> <html> <head> <meta charset="utf-8"> <title>無標題文件</title> <style type="text/css"&g

【其他】Activity通過 ctrl+滑鼠 直接連結到對應的xml佈局檔案,而不是開啟R檔案。

寫在前邊,這篇文章的解決方案不完美,拆了東牆,補了西牆,先不刪,只當我自己參考使用吧,如果以後有機會了,搞個完美的方案。 電腦重灌系統了,順便體驗了一下一個沒用過的eclipse版本。 裝完adt,配好sdk,寫個demo測試下,還可以,介面都一樣,

Selenium滑鼠事件

原作者:https://www.cnblogs.com/lingling99/p/5750266.html滑鼠點選操作 滑鼠點選事件有以下幾種型別: 清單 1. 滑鼠左鍵點選  Actions action = new Actions(driver);action.click

客服菜上下滾動效果實現

saas on() div config jid function IV fig shai 這是html結構 <!-- 客服 --> <div class="service" id="service">   <img src="./ima

WPF Datagrid對滑鼠進行響應,藉助EventSetter

在做的一個c#的專案中發現Datagrid沒辦法直接對滑鼠單擊進行響應, 呼叫MouseDown事件也需要點選某一行第二次才能響應。 所以藉助EventSetter來簡單的實現了一個。 介面部分的程式碼 <DataGrid x:Name="dataGrid" H

等待loading 菊花圖CSS 效果實現【Antd spin 原始碼實現

緣起: 今天閒來無事,除錯一個單頁面VUE的效果,94年的開發小哥哥說,讓我給他加個菊花圖...Excuse me? 菊花圖?長這樣麼? 還是?長這樣?簡直讓我腦洞大開。。 其實吶,他說的是這個。。等待狀態,我內心  好了,那怎麼實現吶 第一反應:gif

DataGrid控制元件選中的實現方法

實現的核心技術是使用的javascript步驟一:建立js檔案,如下GridControl.js檔案內容:var Rows=new Array();var ShiftStartRow="";function onfocusit(){iRow=window.event.srcE

選中gridview其中一行刪除按鈕實現行刪除功能

在前端給gridview新增客戶端事件(行點選事件):  <ClientSideEvents  RowClick="function(s, e) {SetLeftData(s,e);}" />  function SetLeftData(s, e) {    

java 焦點在按鈕上鍵盤迴車,等同於滑鼠

簡單例子import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyTest extends JFrame implements KeyListener,ActionListene

Unity: Unity3D 模擬滑鼠/雙

該文來自:http://www.omuying.com/article/123.aspx 功能程式碼: using UnityEngine; using System.Collections; public class MouseResponseManager { p

Objective-C singleton(例模式)的實現

OC中的單例很有意思,因為沒辦法像JAVA或C++中把建構函式設為private的來防止其它人直接 new 一個新物件,所以像如下單例的實現方式,只能祈禱大家必須按你要求的方式建立物件,有人不小心直接 [[ xx alloc] init] 建立一個物件,是很難發現的。 s

QML滑鼠拖動移動ListView項的位置

在QML開發中,ListView是我們經常用到的控制元件,可以用它給使用者展示出列表,但是往往都是將專案的顯示順序排好後,直接讓ListView顯示出來,亦或者是知道要移動到具體的那一位置,然後調整資料在ListView中的順序來達到要求,現有一種需求,就是用滑鼠拖動某項,

讓一個按鈕自動觸發,自動執行onclick滑鼠事件. 預設已點選.

這裡我的按鈕是jsp中的一個<a>標籤寫的,下面是定時兩秒預設點選,當然,想直接預設點選的話就直接把方法裡面的毫秒值2000刪除就可以了,也可以自行設定毫秒值進行定時。 <scrip

QT重寫控制元件函式並新增滑鼠事件

重寫QComboBox類 1.在工程中新建一個C++類,命名為myboBox,base的地方填寫QComboBox,緊接著勾選#include QWidget。 2.myboBox檔案中包含標頭檔案#include <QComboBox>嗎,並新增Q_OBJEC

QMLROW元件的使用方法及示例

ROW其實相當於我們在C++模式下寫的那個水平佈局。就是讓內部控制元件一直排列下去。 首先呢,這佈局中,先新增的在前,後新增的在後,新增方法很簡單,只要這個控制元件被Row包含就行了。 示例中嘗試新增