Hi,

I was trying to implement a tag cloud with a ListView but I'm facing some 
unexpected problems. My idea was the following:

A ListView would have a model of tags, based on a QStringList. Other list view 
would have items (custom model), each item would have associated tags. I want 
to concentrate the tags in a single list in the UI. So, when you select an 
item, it will display all the tags, and the ones which are present in that item 
would get highlighted.

Every time I click a tag, it will toggle that tag for the respective item. The 
problem is that for some reason, ListView seems to cache the data model and 
thus it doesn’t get redrawn. Because the tags are the exactly the same. What 
changed was item tags list. 

Is there anyway to bypass the model cache or force the ListView to redraw? I 
can’t find any suitable method on ListView documentation.

I’m not finding an obvious solution for this problem and I believe that is a 
simple solution for it. Any ideas?

ListView {
        id: tagsList
        model: tags
        delegate: Rectangle {
            color: "transparent"
            border.color: "white"
            border.width: 1

            Text {
                id: tagLabel
                color: "gray"
                text: "#"+modelData
                Component.onCompleted: {
                    var tags = itemList.model[itemList.currentIndex].tags;

                    for (var i=0;i<tags.length;i++)
                    {
                        if (tags[i]==modelData)
                            color = "white"
                    }
                }
            }

            MouseArea {
                anchors.fill: parent
                onClicked: 
itemList.model[itemList.currentIndex].toggleTag(modelData)
            }
        }
}

Thanks in advance,

Regards,

Nuno
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to