Qt 如何设置QML TableViewStyle以显示中间椭圆(ElideMiddle)

Qt 如何设置QML TableViewStyle以显示中间椭圆(ElideMiddle),qt,qml,tableview,qtquick2,Qt,Qml,Tableview,Qtquick2,我正在创建一个QMLTableView,每当文本太长而无法放入其列时,我希望文本(行和标题中的文本)位于中间椭圆。例如:This\u确实很长\u文本可能显示为This…文本 我已经在不使用TableViewStyle的情况下成功地实现了它,但是我想使用TableViewStyle一次轻松地设置多个列的样式 我已经阅读了以下文档: 我还试着对某人的一些代码进行一些小的调整,只是将elide:Text.elidelight替换为Text.ElideMiddle,这也不起作用。似乎更改标题

我正在创建一个QML
TableView
,每当文本太长而无法放入其列时,我希望文本(行和标题中的文本)位于中间椭圆。例如:
This\u确实很长\u文本
可能显示为
This…文本

我已经在不使用
TableViewStyle
的情况下成功地实现了它,但是我想使用
TableViewStyle
一次轻松地设置多个列的样式

我已经阅读了以下文档:

我还试着对某人的一些代码进行一些小的调整,只是将
elide:Text.elidelight
替换为
Text.ElideMiddle
,这也不起作用。似乎更改标题颜色高度有效,但不更改elide

下面的代码生成一个完全不显示省略号的表,尽管我希望中间有省略号。如果我删除覆盖,它将正确删除

显示第二列截断第一列但没有椭圆的图像

import QtQuick 2.9
import QtQuick.Controls 1.4 as QC1
import QtQuick.Controls.Styles 1.4
import QtQuick.Controls 2.2


ApplicationWindow {
    visible: true
    width: 400
    height: 400

    ListModel {
        id: myListModel
        ListElement {
            cell1Text: "This_is_some_really_long_text"
            cell2Text: "Shorter_text"
        }
    }

    QC1.TableView {
        id: tableView
        anchors.fill: parent
        model: myListModel

        QC1.TableViewColumn {
            role: "cell1Text"
            title: "Cell1Text"
        }

        QC1.TableViewColumn {
            role: "cell2Text"
            title: "Cell2Text"
        }

        style: TableViewStyle {

            Text {
                elide: Text.ElideMiddle
            }

            headerDelegate: Rectangle {
                height: 20
                color: "lightsteelblue"
                Text {
                    text: styleData.value
                    elide: Text.ElideMiddle
                }
            }

            rowDelegate: Rectangle {
                Text {
                    elide: Text.ElideMiddle
                }
            }

            itemDelegate: Rectangle {
                Text {
                    text: styleData.value
                    elide: Text.ElideMiddle
                }
            }
        }
    }
}


elide是以项目的宽度作为参考来应用的,但在这种情况下,项目的大小由内容而不是标题给出,这种情况下的解决方案是将文本的宽度设置为父项,也不需要修改rowDelegate

style: TableViewStyle {
    headerDelegate: Rectangle {
        height: 20
        color: "lightsteelblue"
        Text {
            width: parent.width // <---
            text: styleData.value
            elide: Text.ElideMiddle
        }
    }

    itemDelegate: Rectangle {
        Text {
            width: parent.width // <---
            text: styleData.value
            elide: Text.ElideMiddle
        }
    }
}
QC1.TableView {
    id: tableView
    anchors.fill: parent
    model: myListModel


    QC1.TableViewColumn {
        role: "cell1Text"
        title: "Cell1Text"
        elideMode: Text.ElideMiddle
    }

    QC1.TableViewColumn {
        role: "cell2Text"
        title: "Cell2Text"
        elideMode: Text.ElideMiddle
    }

    style: TableViewStyle {
        headerDelegate: Rectangle {
            height: 20
            color: "lightsteelblue"
            Text {
                width: parent.width
                text: styleData.value
                elide: Text.ElideMiddle
            }
        }
    }
}