使用QML,TableView的大小不正确

时间:2016-03-07 22:45:13

标签: qt qml

我正在尝试使用QML创建一个TableView,其中包含一个复选框,一个图像和一个文本字段。表列定义如下:

// TableViewCheckBoxColumn.qml
TableViewColumn {
    title: ""
    role: "check"
    delegate: CheckBox {
       anchors.fill: parent
       checked: styleData.value
    }
}

//TableViewImageColumn.qml
TableViewColumn {
    title: ""
    role: "thumbnail"
    delegate: Image {
        anchors.fill: parent
        source: styleData.value
        width: 30
        height: 30
    }
}

现在,数据模型和表本身被定义为QML组件,如下所示:

Item {
    ListModel {
        id: sourceModel
        ListElement {
            check: false
            thumbnail: "file:///Users/xargon/alignment.png"
            length: "10:22"
        }
    }

    // Table view
    TableView {
        anchors.centerIn: parent
        alternatingRowColors: false

        TableViewCheckBoxColumn {
            id: checkedColumn
        }

        TableViewImageColumn {
            id: thumbColumn
        }

        TableViewColumn {
            id: lengthColumn
            role: "length"
            title: "Length"
        }

        model: sourceModel
    }
}

现在,它嵌入在ColumnLayout和StackView中:

ColumnLayout {
    anchors.fill: parent

    MyTable {
        id: reviewScreen
        Layout.fillWidth: true
    }

    StackView {
        id: options
        Layout.fillHeight: true
        Layout.fillWidth: true
        initialItem: reviewScreen
    }
}

现在我希望桌子能够填充父控件的整个宽度,我也期待将图像绘制为30 x 30图像,但我看到的是附加的屏幕截图,其中水平滚动条可以移动控件和桌子之间的距离很小,图像也非常扭曲。

enter image description here

1 个答案:

答案 0 :(得分:1)

是的,只需要声明每个TableViewColumn的高度和重量,例如:

    TableViewColumn { id: lengthColumn; role: "length"; title: "Length"; height: parent.height/8; width:parent.width*0.25}