首页| 论坛| 消息

标题:请问qml怎么写一个有contentItem的组件
作者:fanzongsao
日期:2019-09-09 18:43
内容:

是这样的,我写了一个组件Rec.qml,是一个父Rectangle包含两个子Rectangle,son1 和 son2;
然后在main.qml里调用Rec组件了4次,代码框架如下面所示。

现在我想直接在main里重写里的 rec3 的子son1, 就像是自定义 Button 时的 contentItem 属性一样,
请问该怎么修改Rec.qml才能实现这个功能。

刚接触 qml 不久,找了挺多资料也没能找到实现这个功能的办法,见笑了。
请各位大佬不吝赐教!



//Rec.qml
Rectangle
{
id: father
Rectangle{ id: son1 }
Rectangle{ id: son2 }
}
//main.qml
ColumnLayout
{
Rec{ id: rec1 }
Rec{ id: rec2 }
Rec{ id: rec3 }
Rec{ id: ..


#1 [小韩老师 09-09 19:18]
//Rec.qml
Rectangle
{
id: father
property alias son1width: son1.width
Rectangle{ id: son1 }
Rectangle{ id: son2 }
}
//main.qml
ColumnLayout
{
Rec{ id: rec1 }
Rec{ id: rec2 }
Rec{ id: rec3 }
Rec{ id: rec4 }
}
// 通过alias的方式将需要导出的属性进行封装,是不是你要的功能?
#2 [fanzongsao 09-10 16:36]
不是,我想要的功能是:在调用Rec组件的时候能够自定义一个Rectangle去取代Rec.qml中的son1Rectangle.
类似下面这样的

//main.qml
ColumnLayout
{
Rec{ id: rec1 }
Rec{ id: rec2 }
Rec
{
id: rec3
&n ..
#3 [xiii_1991 04-08 21:15]
我不知道官方控件里面的contentItem是如何实现的,但是我有两种曲线的方法。
1.你可以继承官方的Control控件,它预置了background和contentItem供你替换,可以通过paddings,insets控制它们的布局
2.自己画一个空的Item,自己控制Item的布局,并且设置成visible:false。使用的时候,内部建立新的元件,是可以anchor.fill平级控件的,所以可以填充这个预置的隐藏方块,曲线实现了contentItem。

回复 发表
主题 版块