TableView 的 QML 大小不正确

Posted

技术标签:

【中文标题】TableView 的 QML 大小不正确【英文标题】:TableView not the correct size with QML 【发布时间】:2016-03-07 22:45:12 【问题描述】:

我正在尝试使用 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 图像,但我看到的是附加的屏幕截图,其中水平滚动条可以移动控件和表格之间的距离很小,图像也很失真。

【问题讨论】:

您需要在每个元素上指定宽度和高度。 【参考方案1】:

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

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

【讨论】:

以上是关于TableView 的 QML 大小不正确的主要内容,如果未能解决你的问题,请参考以下文章

QML TableView:数字格式

如何在鼠标事件上更改 QML 的 TableView 中一行的颜色?

使 QML TreeView 可调整大小

iOS 怎么避免tableview刷新数据错乱

求问QT creator的table view一些问题……

来自 C++ 的 QStandardItemModel 在 QtQuick / QML TableView 中不可见