如何覆盖TableView.rowDelegate的某些属性,同时保持其他属性的默认值

时间:2015-08-29 22:31:09

标签: qt qml qtableview

我使用rowDelegate来实现变量行高,如下所示。但是,它不会使用选定/备用行的默认背景颜色。如何保留我不想覆盖的所有默认值?

TableView {
        id: messagesTable
        TableViewColumn {
            role: "severity"
            title: ""
            width: 20
            delegate: Image {
                anchors.centerIn: parent
                fillMode: Image.Pad
                source: iconSources[styleData.value.toLowerCase()]
            }
        }
        TableViewColumn {
            role: "message"
            title: "Message"
            width: 300
        }
        TableViewColumn {
            role: "source"
            title: "File"
            width: 150
        }
        TableViewColumn {
            role: "startLine"
            title: "Line"
            width: 40
        }
        TableViewColumn {
            role: "startColumn"
            title: "Column"
            width: 50
        }
        rowDelegate: Rectangle {
            width: childrenRect.width
            height: (messagesModel.get(styleData.row).lineCount || 1) * 20
        }
        model: messagesModel
    }

1 个答案:

答案 0 :(得分:1)

你不能。

Qt Quick Controls样式的一般规则是:一旦覆盖委托,就从头开始。例如,如果样式提供了DefaultTableViewRowDelegate类型,则可以构造该实例,然后它可以工作,但由于默认委托是内联编写的,因此您无法访问它们。