什么是加载Rectangle(由代码绘制)或Qml中的Image的最佳方法?

时间:2016-10-02 14:21:28

标签: qt qml

我有一个带有一个'矩形'的Qml文件。和一个'图像'我想根据my.cpp文件中设置的属性加载其中一个。

请帮我找到最佳方法。

实际上我可以想到两种可能的方法来做同样的事情: 1)第一种方法是同时拥有在相应QML中定义的元素(图像和矩形),并控制它们从my.cpp文件中的可见性。我可以拥有一个属性,这个属性可以控制两者中任何一个的可见性。这种方法的缺点是即使只需要显示一个元素,也会创建两个元素。

2)第二种方法是我们可以有两个组件并使用" Loader"取决于my.cpp设置的属性。

例如:

'     零件     {         ID:IMG         图片         {             id:myImage             来源:currentdir +" /img_production/Separator/myImage.png"             宽度:10             身高:79         }     }

Component
{
    id:rect
    Rectangle
    {
        id:re
        height: 82
        width: 10
        color: "#FFFFFF"
    }
}
Loader
{
    id: itemDisplay
    sourceComponent: style.flag? rect : img
    anchors.fill: parent.fill
}

' 寻找一些专家建议。

PS:style.flag是my.cpp设置为Qml的属性。

1 个答案:

答案 0 :(得分:1)

在这种情况下,如果两个项目都是简单的基本类型,我会进行可见性更改。

直接实例化这两个元素可以更容易地在绑定中引用它们或绑定到它们的属性。 这也意味着它们的分配只发生一次,减少了内存碎片的可能性

如果你担心图像在显示矩形时会占用太多内存,你仍然可以使图像的源属性取决于visiblity值,即在不显示Image元素时卸载图像。