TableModelColumn QML Type

Represents a column in a model. More...

Import Statement: import Qt.labs.qmlmodels

Detailed Description

The TableModelColumn class represents columns in TableModel. TableModel supports JavaScript/JSON data where each row is an object, a list of simple key-value pairs where the keys are unordered.

 {
     // Each property is one cell/column.
     checked: false,
     amount: 1,
     fruitType: "Apple",
     fruitName: "Granny Smith",
     fruitPrice: 1.50
 },
 // ...

However, models in Qt are manipulated via row and column indices. Specifying the columns with TableModelColumn allows a mapping between Qt's built-in roles to any property in each row object.

 import QtQuick
 import QtQuick.Window
 import Qt.labs.qmlmodels

 Window {
     width: 400
     height: 400
     visible: true

     TableView {
         anchors.fill: parent
         columnSpacing: 1
         rowSpacing: 1
         boundsBehavior: Flickable.StopAtBounds

         model: TableModel {
             TableModelColumn { display: "checked" }
             TableModelColumn { display: "amount" }
             TableModelColumn { display: "fruitType" }
             TableModelColumn { display: "fruitName" }
             TableModelColumn { display: "fruitPrice" }

             // Each row is one type of fruit that can be ordered
             rows: [
                 {
                     // Each property is one cell/column.
                     checked: false,
                     amount: 1,
                     fruitType: "Apple",
                     fruitName: "Granny Smith",
                     fruitPrice: 1.50
                 },
                 {
                     checked: true,
                     amount: 4,
                     fruitType: "Orange",
                     fruitName: "Navel",
                     fruitPrice: 2.50
                 },
                 {
                     checked: false,
                     amount: 1,
                     fruitType: "Banana",
                     fruitName: "Cavendish",
                     fruitPrice: 3.50
                 }
             ]
         }
         delegate:  TextInput {
             text: model.display
             padding: 12
             selectByMouse: true

             onAccepted: model.display = text

             Rectangle {
                 anchors.fill: parent
                 color: "#efefef"
                 z: -1
             }
         }
     }
 }

TableModelColumn also has basic read-only support for complex rows. For more information, see Supported Row Data Structures.

Note: Most of the above concepts also apply to TreeModel, except in TreeModel each row represents a node of the tree.

Supported Roles

TableModelColumn supports all of Qt's roles, with the exception of Qt::InitialSortOrderRole. Roles can be accessed by as listed below, e.g.

 text: display

 required property string display

See also TableModel and TableView.