बदलते मॉडल नहीं redraw वस्तुओं में QML कभी कभी

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 भेजा जाता है), अर्थात्, यदि वस्तुओं की संख्या के बराबर था करने के लिए एक और अद्यतन करने के बाद, वहाँ भी एक वस्तु है, लेकिन अलग अलग विशेषताओं के साथ, कोई redrawing जगह लेता है, पुराने बटन बनी हुई है । इसके अलावा, यह किसी भी तरह पर निर्भर करता है क्रम. भी, अगर मैं लाइन को हटाने के साथ रंग, मॉडल अद्यतन करेगा.

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

सबसे अच्छा जवाब

0

मुद्दा यह है कि buttonParametersChanged है कि एक संकेत ट्रिगर के काम पर एक नए कंटेनर (QList<>) करने के लिए buttonParameters. यह ट्रिगर नहीं करता है, पर परिवर्तन करने के लिए सामग्री की एक मौजूदा QList<> आवंटित करने के लिए कि संपत्ति है.

हालांकि, आप हमेशा कर सकते हैं मैन्युअल रूप से ट्रिगर buttonParametersChanged जब आप जानते हैं कि आप संशोधित सामग्री के QList<> देना चाहिए जो आप प्रभाव आप चाहते हैं.

नोट, एक QML ListModel या C++ बराबर जाने की संभावना हो जाएगा के लिए अधिक उपयुक्त इस मामले का उपयोग करें. कई QML घटकों के लिए डिज़ाइन कर रहे हैं विशेष रूप से के साथ एकीकृत और उन्हें संभाल मामलों में कंटेनर की सामग्री को बदल रहा है ।

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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में