การเปลี่ยนรุ่นไม่ 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 ต้องใช้สถานที่ยใจด้วยเรื่องพ่อของปุ่มพวกซากต่างๆออกมา ยิ่งกว่านั้นมันก็ขึ้นอยู่กับ ที่ runtime. แล้วถ้าฉันเอาสายกับสีรุ่นจะปรับปรุง

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

คำตอบที่ดีที่สุด

0

ประเด็นคือ buttonParametersChanged เป็นสัญญาณนั้นตัวกระตุ้นในการบ้านใหม่ของตู้คอนเทนเนอร์(QList<>)เพื่อ buttonParameters. มันไม่กระตุ้นในการเปลี่ยนแปลง เนื้อหา ของที่มีอยู่แล้ว QList<>ได้รับมอบหมายให้ที่บ้านได้

อย่างไรก็ตามคุณสามารถด้วยตนเองกระตุ้น buttonParametersChanged ตอนที่คุณรู้ว่าคุณมีการแก้ไขเนื้อหาของ QList<>ซึ่งจะทำให้คุณผลกระทบที่คุณต้องการ

บัน QML ListModel หรือ C++มพล่ามคำเชยๆออกมาไม่หยุดมีแนวโน้มว่าจะเป็นมากกว่าเหมาะสมสำหรับเรื่องใช้คดี หลาย QML ส่วนประกอบคือร์สฝึกถูกออกแบบมาเพื่อโดยเฉพาะ integrate กับพวกเขาและจัดการเรื่องของส่วนบรรจุเนื้อหาของยอมเปลี่ยนแปลง

2021-11-16 14:26:45

นั่นคือสิ่งที่ฉันเรียกสัญญาณ buttonParametersChanged ด้วยตนเองและในบางสถานการณ์มันไม่ได้ผล
Narina

ฉันจะเพิ่มข้อ onButtonParametersChanged เครื่องมือจัดการมันปูมบันทึกออกบางอย่างงั้นคุณสามารถทำให้แน่ใจว่าสัญญาณคือจริงยิงตอนที่คุณคิดว่ามันเป็น.
David K. Hess

สัญญาณอย่างแน่นอนถูกไล่ออก,ฉันตรวจสอบแล้ว
Narina

ให้น้อยที่สุ reproducible ตัวอย่างเช่นในกรณีนี้
GrecKo

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่