1. 程式人生 > >Qt那些事0.0.20

Qt那些事0.0.20

一個裝逼失敗的例子

今天原本是給別人介紹 QMLBehavior 的用法。畢竟自己在之前用過很多次,感覺已經算是熟練的地步,可以為人師了。於是乎自己寫了個程式碼,還屁顛屁顛的把別人喊過來,指著螢幕說,看,就是這麼寫的,嗯,程式碼就像下面寫的:

Behavior on scale {
	NumberAnimation{
		duration:200
		onStopped:{
			if(_root.scale == 0){
				_root.visible=false
			}
		}
	}
}

理解起來沒什麼問題呀,在動畫縮小到比例為0的時候,設定此層不可見。NumberAnimation

也確實有 stopped 訊號(其實是基礎動畫類的訊號)。但後來除錯的時候發現問題,就是明明不可見的情況,一直反饋是可見的。最後追查到 onStopped 沒有執行。

WTF

再去檢視文件,發現了端倪:

stopped()
...
...
It is only triggered for top-level, standalone animations. It will not be triggered for animations in a Behavior or Transition, or animations that are part of an animation group.
(只會在頂級,獨立的動畫中觸發。在Behavior或者Transition或者是動畫組的一份時不觸發)
...

好了,知道了原因,只是沒有仔細看過這段文件,或者沒有太深的印象。可能大家都知道這個原因,所以即使去OS也搜不到什麼有價值的資訊。

只好在觸發結束時引入一個定時器,等到這個動畫結束後使用定時器觸發了。<