QML中的state 狀態
QML中的狀態其實很好理解,任何事物在某一事件都是有一個狀態的。
比如你看到的一個視窗,這個時候裡面的文字和圖片正處於某個狀態中。比如一個超連結,你點選了,發現顏色變了,你按了Ctrl+A,整個窗體好像被蒙上了一層布,這也是狀態的改變。所有的一切都是狀態。
因此,QT提供這個功能。比如你想要變換文字的顏色,你會怎麼做?在單擊事件中進行響應是可以的。那如果是每一次單擊都是要變色呢(不是隨機顏色)?那你的槽函式程式碼會非常龐大。因為我們可以事先定義好一些狀態,一旦觸發,就讓它更換狀態就好了。
程式碼來得最直接了,下面是一個改變文字顏色的小例子,當滑鼠鬆開,文字變藍色。
import QtQuick 2.6 import QtQuick.Window 2.2 Window { visible: true MouseArea { anchors.fill: parent onReleased: { textTest.state="blueStates" } } Text { id:textTest states: [ State { name: "redStates" PropertyChanges { target: textTest color:"red" } },//注意這裡的逗號 State { name: "blueStates" PropertyChanges { target: textTest color:"blue" } } ] text: qsTr("Hello World") anchors.centerIn: parent state: "redStates" } }
這裡有兩個特殊的地方,第一就是states用的是中括號,[],而且每個state之間使用逗號來隔開;第二是PropertyChanges,這個元素用來對物件進行操作。如果你檢視幫助文件,它的屬性只有幾個。那麼我設定的color之類的是哪裡來的呢?
在我們指定了target之後,就是對要操作的物件進行操作了,所以設定color之類的,其實是我們的text的屬性。也就是說,你要對text的哪些屬性進行更改,只要寫在這個元素裡面就可以了。當該狀態被啟用,那麼它就會去幫你完成這個狀態的變換。
很多人會有個疑問,我變換了顏色,如果我下次變換文字大小,那這個文字是藍色還是紅色呢?
PropertyChanges提供了一個restoreEntryValue屬性。當它為真,表示你下次更改其它屬性的時候,它將會還原之前的更改。當它為假,之前的更改會被保留。
相關推薦
QML中的state 狀態
QML中的狀態其實很好理解,任何事物在某一事件都是有一個狀態的。 比如你看到的一個視窗,這個時候裡面的文字和圖片正處於某個狀態中。比如一個超連結,你點選了,發現顏色變了,你按了Ctrl+A,整個窗體好像被蒙上了一層布,這也是狀態的改變。所有的一切都是狀態。 因此,QT提供這
react 中隨state狀態改變,資料在dom中渲染問題
初遇react,問題不斷,react生命週期變化,會隨著setState狀態改變,昨天遇到個問題,處理到晚上10點,雖然自己琢磨未果,但是對生命週期有了很大的瞭解; 後續再補充相關知識,先說需求: 想獲取物件巢狀物件中的某個屬性,把值寫入render中,渲染do
Vuex 在工程化中的使用以及state狀態屬性的使用筆記
Vuex是什麼? 引入官方提供的解釋,vuex 是專門為 vue.js 設計的一套 狀態管理模式 。什麼是狀態管理模式?說白了就是資料的集中管理。我們在使用 vue.js 時所用到的資料全部抽取出來放在一個state物件下,這樣我們在任何元件內都可以訪
QML中你所不知道的state
最後一次寫QML已經是2010年了,最近由於產品需要,重拾QML。之前nokia給我們培訓QML的時候,對於state這個概念理解的不是很透徹。最近在做產品前期的QML熱身,發現QML中的state有一種神奇的功能:歷史記憶效應 state核心就是體
Java對象在內存中的狀態
引用 java對象 之前 恢復 整理 變量 bsp () 一個 可達的/可觸及的 Java對象唄創建後,如果被一個或者多個變量引用,那就是可達的,即從根節點可以觸及到這個對象。 其實就是從根節點掃描,只要這個對象在引用鏈中,那就是可觸及的。 可恢復的 Java對象不再被任何
QML中實現setTimeout和setInterval
comment del tint connect start pre 通過 false code Qt的QML中,js未提供setTimeout和setInterval,可以通過下面的代碼實現。 Timer {id: timer} function setTimeout
006_netstat中state詳解
51cto time list osi lose 手動 請求 等待 沒有 TCP三次握手的過程如下: 主動連接端發送一個SYN包給被動連接端; 被動連接端收到SYN包後,發送一個帶ACK和SYN標誌的包給主動連接端; 主動連接
[C++設計模式] state 狀態模式
sso 麻煩 -a head 分支 rtu 相關 代碼 pst 《head first 設計模式》中的樣例非常不錯,想制造一個自己主動交易的糖果機,糖果機有四個狀態:投入錢不足,投入錢足夠,出售糖果,糖果售罄。糖果機的當前狀態處於當中不同的狀態時,它針對同一個操作的
一篇博客分清shell中的狀態返回值-return-break-continue-exit
shell一篇博客分清shell中的狀態返回值-return-break-continue-exit 一、break、continue、exit、return的區別和對比 條件與循環控制及程序返回值命令知識表命令說明break n如果省略n,則表示跳出整個循環,n表示跳出循環的層數continue n如果省略
JAVA Thread中的狀態
mac star java started class out bject can follow /** * A thread state. A thread can be in one of the following states: * <
在Fabric ChainCode中使用狀態機
安裝 for spl 返回 狀態 沒有 interface 文件 ret 在企業級應用開發中,經常會涉及到流程和狀態,而有限狀態機(FSM)則是對應的一種簡單實現,如果復雜化,就上升到Workflow和BPM了。我們在Fabric ChainCode的開發過程中,也很可能涉
http中響應狀態碼表示的意義?
forbidden 信息 server gpo 由於 tro 永久 erro 選擇 狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別: 1xx:指示信息--表示請求已接收,繼續處理 2xx:成功--表示請求已被成功接收、理解、接受 3xx:重定向--要完成請
Vuex內容解析和vue cli項目中使用狀態管理模式Vuex
ces timeout AD 所有 vue ... 介紹 -- 組裝 中文文檔:vuex官方中文網站 一、vuex裏面都有些什麽內容? const store = new Vuex.Store({ state: { name: ‘weish‘,
Linux中系統狀態檢測命令
輸出 硬件 height 操作系統 alt page 不顯示 etc 多個進程 1.ifconfig用於獲取網卡配置與網絡狀態等信息,格式為:ifconfig [網絡設備] [參數] 2.uname命令用於查看系統內核版本等信息,格式為:uname [-a] 查看系統的內
原生 JavaScript 實現 state 狀態管理系統
self. == itl 進入 npr ror patch int -c 原生 JavaScript 實現 state 狀態管理系統 Build a state management system with vanilla JavaScript | CSS-Tri
在qml中使用model給委托對象MapPolylIne的path屬性賦值。
con num clas mod 代碼 pla eat quic class 遇到兩個崩潰的問題。 1、A線程中給賦值了變量 listA, 線程B中使用函數Add(QList<GeoPath> &list),由於在其函數中調用了list.at(index
設計模式---狀態變化模式之state狀態模式(State)
情況 ... 概念 擴展 pen com 耦合 new 發現 前提:狀態變化模式 在組建構建過程中,某些對象的狀態經常面臨變化,如何對這些變化進行有效的管理?同時又維持高層模塊的穩定?“狀態變化”模式為這一個問題提供了一種解決方案。 典型
【PHP常見面試題 PHP基礎-網路協議】HTTP/1.1中,狀態碼 200 301 304 403 404 500 的含義。
文章目錄 一、考點 1、HTTP協議狀態碼 ① 狀態碼的作用: ② 五類響應:1XX、2XX、3XX、4XX、5XX ③ 常見狀態碼:
Telerik UI for ASP.NET AJAX教程:在React應用程式中管理狀態的3個基本技巧
下載Telerik UI for ASP.NET AJAX最新版本 在React應用程式中學習一些有關使用State的快速和重要提示,以幫助您確定哪種選項,適合您的環境。 不要害怕以setState()開頭 首先,如果您是React的新使用者,或者開始使用新的React應用程式,請從Re
QML中能使用什麼JS庫
QML中能使用什麼JS庫 JavaScript 是由 ECMAScipt + 宿主環境構成的。 也就是說宿主環境不同,使用 JavaScript 編寫 的庫一般也是不相容的。 例如宿主環境有常見的瀏覽器,也有 nodejs,當然也有 QML。 一般情況下,瀏覽器的 Jav