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