qml的focus問題

It is headache issue of focus in application. If there is no focus item, the key event can't be handled, and it can't do anything in one screen --- the application hangs!!!

Basically, the basic element is "item" in qml. And item has 2 properties, focus and activeFocus. The activeFocus is read-only, and focus property can be used when set focus to one item or not. Be carefully, the system can't set focus to other items when set current element's property focus to false (Haha, now the application have opportunity to hang!!). So, usually we only call element.focus = true. Also, there is one useful method to set the focus directly -- forceActiveFocus(), but it is usually to abuse everywhere.

Then, qml have focusScope. It can be used in layout. For example, if you make one focusScope A, you can make one default focus element B in it. Then when the A is focused, the B will get focus automatically. For the detail information, refer to http://doc.qt.nokia.com/4.7-snapshot/qdeclarativefocus.html.

At last, come to my question: how to relinquish one element's focus? Such as you make one component and it will hide when meet some conditions. Obviously, you shouldn't and can't call upper level element to set focus. Here have one option to solve it. In the component, you can emit one signal, and connect the signal in upper level.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章