• 113阅读
  • 2回复

[提问]请问qml怎么写一个有contentItem的组件 [复制链接]

上一主题 下一主题
离线fanzongsao
 

只看楼主 倒序阅读 楼主  发表于: 09-09
是这样的,我写了一个组件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: rec4 }
           }
在线小韩老师

只看该作者 1楼 发表于: 09-09
  //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的方式将需要导出的属性进行封装,是不是你要的功能?
离线fanzongsao

只看该作者 2楼 发表于: 09-10
不是,我想要的功能是:在调用Rec组件的时候能够自定义一个Rectangle去取代Rec.qml中的son1Rectangle.
类似下面这样的

//main.qml
            ColumnLayout
            {
                        Rec{ id: rec1 }
                        Rec{ id: rec2 }
                        Rec
                        {            
                                    id: rec3
                                    contentItem: Rectangle   //这个contentItem的Rectangle会直接替换Rec中的son1组件
                                    {
                                                                        id: son1
                                                                        ....
                                    }
                        }
                         Rec{ id: rec4 }
           }
快速回复
限100 字节
 
上一个 下一个