對于上一個例子攒发,我們的view路徑已經(jīng)定死了驳癌,不能夠進(jìn)行路徑的跳轉(zhuǎn)娄琉,如果細(xì)心的同學(xué)可能也會發(fā)現(xiàn)我們默認(rèn)觸發(fā)編輯的行為也是有限的融击,那么為了對這兩個問題進(jìn)行改進(jìn)筑公,我在demo1的基礎(chǔ)上給出了demo2:
對比demo1尊浪,我把view item的雙擊文件夾的行為變更為跳轉(zhuǎn)的行為匣屡,雙擊文件的行為變成使用默認(rèn)應(yīng)用打開的行為,為了實現(xiàn)這樣的功能拇涤,我們首先需要連接view的雙擊信號捣作,然后獲取雙擊item的信息并且進(jìn)行處理;另外鹅士,我把編輯文件名的操作放到了一個右鍵菜單中券躁,這也是本來view默認(rèn)不支持的操作形式。
從demo2中掉盅,我們已經(jīng)能夠窺見model/view的交互形式了也拜,model/view機(jī)制實際上是以內(nèi)部信號處理+外部(開發(fā)者)定制信號處理的方式進(jìn)行設(shè)計的,通過這樣的形式趾痘,我們不需要了解底層的細(xì)節(jié)慢哈,也能夠基于它的框架進(jìn)行開發(fā),感覺一下子簡單了不少扼脐。由于復(fù)雜的邏輯交互已經(jīng)被內(nèi)置的流程處理岸军,剩下來的工作看起來就非常的高大上了奋刽,對于一般的開發(fā)者來說,熟練掌握這種demo2中的開發(fā)形式足矣艰赞。
值得一提的是在Qt5中佣谐,Qt的信號槽已經(jīng)支持了c++的lambda表達(dá)式,這極大的簡化了我們構(gòu)建交互邏輯的難度方妖,雖然可能會帶來一些其它的問題狭魂,但這一重要的特性仍然值得推崇和使用。qt的信號槽和lambda不是本書的重點党觅,如果有興趣或者有疑問雌澄,請大家自信百度參考其它資料補(bǔ)充這一塊的知識。