【问题标题】:Components in qml listview destructedqml listview 中的组件被破坏
【发布时间】:2014-08-03 16:01:35
【问题描述】:

我在 qml 中使用 listview 和控件动态加载创建可折叠面板。

property Component textBoxComponent;
property Component comboBoxComponent;
property Component twoStateBoxComponent;
property Component sliderComponent;

Component.onCompleted:  {
    textBoxComponent = Qt.createComponent("MyTextBox.qml")
    comboBoxComponent = Qt.createComponent("MyCombobox.qml")
    twoStateBoxComponent = Qt.createComponent("CheckBoxSwitcher.qml")
    sliderComponent = Qt.createComponent("MySlider.qml")
}

这些组件在 listview 委托中使用如下:

componentContainer.sourceComponent = comboBoxComponent
componentContainer.item.comboItems = displayValues
componentContainer.item.parameterName = settingName
componentContainer.item.width = ScriptStyles.parameterControlWidth

此代码在函数“Component.onCompleted”中执行。这里的“componentContainer”是“Loader”元素。 在我隐藏列表视图之前一切正常(将高度和不透明度更改为 0。并且还尝试设置 0.05 值)。像这样:

states: [
        State {
            name: "collapsed"
            PropertyChanges {
                target: listView
                height: 0
                opacity: 0
            }
]

展开后,一些控件保持折叠前的状态,而一些控件则重新创建(折叠时执行破坏)。 我怎样才能防止我的对象被破坏?

【问题讨论】:

  • 你应该回答你自己的问题(或删除它)。

标签: listview dynamic components qml


【解决方案1】:

我找到了解决方案。 ListView 元素具有属性cacheBuffer,该属性确定代理是否保留在视图的可见区域之外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-12
    • 2019-10-13
    • 1970-01-01
    • 2020-02-15
    • 2019-02-16
    • 1970-01-01
    • 2011-01-09
    • 2023-04-05
    相关资源
    最近更新 更多