Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

TableView QtQuick 2.12 did not fill Layout (dont fill anything at all)



  • Hi, i'm starting to investigate qml and get the following problem.
    When i'm trying to use TableView from quick 2
    it didnt fill window! Filling perfectly work on buttons and other object in examples, but not table!
    What i doing wrong?
    Here is qml example with my own model

    import QtQuick 2.12
    import MyModule 1.0
    import QtQuick.Window 2.12
    import QtQuick.Layouts 1.12
    import QtQuick.Controls 2.5
    
    ApplicationWindow {	
        visible: true
        width: 1000
        height: 250
    	
        ColumnLayout {
    	id:mainLayout
            anchors.fill: parent
    
    	TableView {	
    		anchors.fill: parent
    		Layout.fillWidth: true
    		Layout.fillWidth: true
    		columnSpacing: 0
    		rowSpacing: 0
    		clip: true
    		model: StandardModel {}
    		
    		delegate: Rectangle {
    			implicitWidth: parent.width/4;
    			implicitHeight: 50
    			border.color: "blue"
    			border.width: 1
    			color: (heading==true) ? "red" : "green"
    			Text {
    				text: tabledata
    				font.pointSize: 12
    				anchors.centerIn: parent
    			}
    		}
    	}
    }
    

    Here is what i'm talking about. When i change window table didnt changed
    0_1557091107582_qml_error.JPG


  • Moderators



  • Thanks for your response.
    I almost try it and it isnt worked

    TableView {	
        anchors.fill: parent
        Layout.fillWidth: true
        columnWidthProvider: function (column) { return mainLayout.width/4 }
        rowHeightProvider  : function (row) { return mainLayout.height/3 }
    

    Yep, its calc width in the beggining of the programm, but when i changed size of mainwindow nothing changed!
    Its not connected with mainLayout.width value (but it is changed)

    And thats happend if i chnge main window size faster (width and height of table cells are different)
    0_1557093522629_qml_error.JPG


  • Moderators

    @SergeyK12
    its all in the docs:
    https://doc-snapshots.qt.io/qt5-5.12/qml-qtquick-tableview.html#row-heights-and-column-widths

    If you change the values that a rowHeightProvider or a columnWidthProvider return for rows and columns inside the viewport, you must call forceLayout. This informs TableView that it needs to use the provider functions again to recalculate and update the layout.

    so whenever your width/height changes call forceLayout()



  • Thanks! Its worked!


Log in to reply