我有以下问题:
我有一个Component
的列表,其中包含宽度为200或800的Rectangle
。我想过滤此列表,只创建Rectangle
s的对象当我在小屏幕上工作时,宽度为200。
最好我不想创建所有对象,检查它们的宽度,并再次销毁宽度错误的对象。出于显而易见的原因,我真的只想要创建宽度为200的那些。
为了做到这一点,我需要在实例化它之前获取宽度的知识。
据我所知,在Component
实例化之前,内省/反映没有公开可用和记录的方式。
我的问题是:是否有一种非公开的方式来获取有关我Component
内部打包内容的知识?使用C ++可以实现吗?
或者至少可以找出封装什么类型的对象?是CustomComponent1
,Button
还是RedRectangle
...
答案 0 :(得分:2)
不幸的是没有。你甚至无法预测它,因为组件甚至可以指向尚未下载的qml文件,如果它是从网络中提取的。
如果你有空间从另一个角度解决问题,你可以尝试一些事情:
所能做的是在创建时将组件外部的属性传递给它。假设您控制了Component中的代码,则可以根据从外部设置的属性值来调整内部元素的创建方式。
如果这还不够好,请说你的Component提供了多个元素而你只想创建符合你标准的元素(可能是多个元素的组合),那么你可以在第一个Component中引入第二个Component层,并且如果第二个Component符合你的条件,那么第二个Component会创建实际元素,如果不匹配,则创建一个空Item {},这个就像它没有创建任何东西一样接近。
我希望有所帮助!