改变模型中不重新绘制的对象,在最大似然有时候

0

的问题

            Repeater {
                model: myModel.buttonParameters
                delegate: Button
                {
                    width: 47
                    height:  47
                    contentItem: Text {
                        id: content
                        text: modelData.name
                        font.family: MyStyle.fontFamily
                        fontSizeMode: Text.Fit
                        font.pixelSize: 30
                        font.styleName: "Bold"
                        topPadding: height / 6
                        color: modelData.visibility ? MyStyle.colorFromSeriesName(this.text) : MyStyle.dividerColor
                        horizontalAlignment: Text.AlignHCenter
                        verticalAlignment: Text.AlignVCenter
                    }

                    background: Rectangle
                    {
                        anchors.fill: parent
                        radius: 4
                        color: MyStyle.backgroundColor
                        border.color:MyStyle.dividerColor
                        border.width: 2
                    }

                    onClicked: {
                        cntModel.visibilityOfChartChanged(modelData.name, "plot");
                    }
                }
            }
            
            On the C++ side.
            myModel.buttonParameters is a QList<MyModel*> , where MyModel is a class inherited from QObject.
            
           Q_PROPERTY(QVariant buttonParameters READ buttonParametersList NOTIFY buttonParametersChanged)

           QVariant buttonParametersList()
          {
             return QVariant::fromValue(m_buttonParametersList );
          }
           

问题是,有一定的变化的模型 (将信号buttonParametersChanged发送),即, 如果对象的数量是等于一和更新后有 也是一个目的,但具有不同特点,没有重新划分 发生,老按钮仍然存在。 此外,它在某种程度上取决于 运行时。 此外,如果删除线的颜色,该模型将更新。

c++ qml repeater
2021-11-16 13:19:09
1

最好的答案

0

问题是,buttonParametersChanged是一个信号,触发器的分配一个新的容器(QList<>),以buttonParameters. 它不会触发的变化的 内容 的现有QList<>分配给该财产。

但是,你总是可以手动触发buttonParametersChanged当你知道你已经修改后的内容QList<>这应该给你你想要的效果。

注意,最大似然ListModel或C++相当于可能会更适合于这种使用情况。 许多最大似然分是设计成具体地整合与他们和处理的情况下集装箱内容的变化。

2021-11-16 14:26:45

这就是事情,我呼叫的信号buttonParametersChanged手动,并在某些情况下它不工作
Narina

我想添加一个onButtonParametersChanged处理程序记录了一些东西所以你可以确保信号是真的射击时你认为它是。
David K. Hess

信号肯定是被炒,我检查。
Narina

提供一个最小的可重复的例子在这种情况下
GrecKo

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................