找回密码
 立即注册
Qt开源社区 门户 查看内容

Qml好用的default附加属性

2019-6-25 18:23| 发布者: admin| 查看: 483| 评论: 0

摘要: Qml存在一个神秘附加属性(default)却是很少用,少用却是很好用。看看我这是怎么用的吧。1.default附加属性组件内部({}内)仅此一个default标记。被deault标记的属性可以使用外部对象,甚至还能使用外部对象的所有子控 ...

Qml存在一个神秘附加属性(default)却是很少用,少用却是很好用。看看我这是怎么用的吧。

1.default附加属性


  • 组件内部( {}内)仅此一个default标记。

  • 被deault标记的属性可以使用外部对象,甚至还能使用外部对象的所有子控件。

2.示例1


  MyText.qml组件内部引用外部对象的两种方法。

  1. importQtQuick2.0


  2. Text{

  3. defaultproperty variant textObject

  4. text: textObject.text

  5. }

  方法一:

  • textObject值可以在MyText对象定义中赋值。

  • MyText的Text控件被引用到textObject中使用。

  1. MyText{

  2. Text{ text:"xxxxx"}// 默认传递给textObject值。

  3. }

  方法二:

  • 上面操作等同于:

  1. MyLabel{

  2. textObject:Text{ text:"xxxxx"}// 等同于默认传递给textObject值。

  3. }

3.例子2


  看似很没用的属性却说有用,还说好用。第一个例子看起来和常规做法差不多。那么我们看看第二个例子使用起来是如何好用的。
  Group.qml组件:

  1. importQtQuick2.0


  2. FocusScope{

  3. propertyalias title: title.text

  4. defaultpropertyalias items: colume.children


  5. Text{ id: title }


  6. Column{

  7. id: colume

  8. anchors.top: title.bottom

  9. }

  10. }

  Group的使用:

  1. Group{

  2. title:"title"


  3. Rectangle{

  4. width:100; height:50;

  5. color:"red"

  6. }


  7. Rectangle{

  8. width:100; height:50;

  9. color:"lightblue"

  10. }

  11. }

  如果不使用该特性则需要这样做:
  如需要多个地方使用则需要重复操作,管理不方便,且理解不直观。

  1. Column{

  2. Text{

  3. text:"title"

  4. }


  5. Column{

  6. Rectangle{

  7. width:100; height:50;

  8. color:"red"

  9. }


  10. Rectangle{

  11. width:100; height:50;

  12. color:"lightblue"

  13. }

  14. }

  15. }

  效果:



4.最后


  从上面例子可以看到Group组件具备Column控件的布局功能,并扩展出类似于 GroupBox控件的功能。原因在于colume.children引用了Group的子控件触发自动布局。

  对于上面例子我们还可以内部操控items对象列表来操作Group上的子控件属性,如item[0].visible = false来隐藏红色矩形控件。

  这样做我们就可以增强组件的功能,降低代码量,特别是那些具备标题栏或某些附属栏的组合框。

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:Qt君,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了