ListView.OverlayHeader Bug (Freezing UI)



  • Hi,

    First I'm using Qt 5.4.2 for VS 2013 on Windows 7 64 bits with Qt Creator 3.6.

    I'm building a Listview scrollable with multiple columns but having fixed header. From what I've read I should use the property "headerPositionning" of the Listview set to OverlayHeader. But I found that if I set the listview height with a percentage of the windows height, this is freezing the UI (maybe a forever loop or deadlock I don't know but I can no longer move or resize the window).

    Here is complete exemple of how to reproduce :

    import QtQuick 2.4
    import QtQuick.Window 2.2
    import QtQuick.Controls 1.2
    
    Window {
        id : mainWindow
        visible: true
        width: 800
        height: 480
    
    	property real gridListWidth : (width * 0.60)
    	property real gridListHeight : (height * 0.50)
    
    	property real gridCellSpacing : (height * 0.004)
    	property real gridCellHeight : (height * 0.039)
    	property real gridCellWidth : (width * 0.20)
    
        Rectangle {
            id : rectBackground
            anchors.fill: parent
            color : "white"
            
            ListView {
                id : ls
                width: mainWindow.gridListWidth
                height: mainWindow.gridListHeight
                clip : true
                headerPositioning: ListView.OverlayHeader
                spacing : mainWindow.gridCellSpacing
    
                model: ListModel {
                    ListElement {
                        name: "Bill Smith"
                        number: "555 3264"
                        hairColor: "red"
                    }
                    ListElement {
                        name: "John Brown"
                        number: "484 7789"
                        hairColor: "blue"
                    }
                    ListElement {
                        name: "Sam Wise"
                        number: "284 1547"
                        hairColor: "yellow"
                    }
                }
    
                header : Row {
                    spacing : mainWindow.gridCellSpacing
    
                    Rectangle {
                        width : mainWindow.gridCellWidth
                        height : mainWindow.gridCellHeight
                        color : "blue"
    
                        Text {
                            anchors.centerIn: parent
                            color : "white"
                            text: "Name"
                        }
                    }
    
                    Rectangle {
                        width : mainWindow.gridCellWidth
                        height : mainWindow.gridCellHeight
                        color : "blue"
    
                        Text {
                            anchors.centerIn: parent
                            color : "white"
                            text: "Number"
                        }
    
                    }
    
                    Rectangle {
                        width : mainWindow.gridCellWidth
                        height : mainWindow.gridCellHeight
                        color : "blue"
    
                        Text {
                            anchors.centerIn: parent
                            color : "white"
                            text: "Hair Color"
                        }
                    }
                }
    
                delegate: Row {
                    spacing : mainWindow.gridCellSpacing
    
                    Rectangle {
                        width : mainWindow.gridCellWidth
                        height : mainWindow.gridCellHeight
                        color : "red"
    
                        Text {
                            anchors.centerIn: parent
                            color : "white"
                            text: name
                        }
                    }
    
                    Rectangle {
                        width : mainWindow.gridCellWidth
                        height : mainWindow.gridCellHeight
                        color : "red"
    
                        Text {
                            anchors.centerIn: parent
                            color : "white"
                            text: number
                        }
                    }
    
                    Rectangle {
                        width : mainWindow.gridCellWidth
                        height : mainWindow.gridCellHeight
                        color : "red"
    
                        Text {
                            anchors.centerIn: parent
                            color : "white"
                            text: hairColor
                        }
                    }
                }
            }
        }
    }
    

    If we comment the following line ;

    headerPositioning: ListView.OverlayHeader
    

    the freezing does not occurred. But I need fixed header and I would prefer handling it in the header item of the ListView. Is someone else is having a freezing UI like me ?

    Best regards,


  • Lifetime Qt Champion

    Hi,

    Just tested your code and indeed, it's also freezing with Qt 5.6 on OS X.

    You should take a look at the bug report system to see if it's something known. If not please consider opening a new report providing a minimal compilable example reproducing the behavior.



  • Thank you SGaist.

    I created an account and create the issue : https://bugreports.qt.io/browse/QTBUG-50105


  • Lifetime Qt Champion

    Thanks for sharing the link !



  • This was definitively a bug, this will be fixed for version 5.6. I'm stuck with version 5.4.2 for now thus as a workaround I'm using a Row element on top of the list with a z : 1.

    Ref https://bugreports.qt.io/browse/QTBUG-50105


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.