【问题标题】:Is it possible customize the QML TableView headerDelegate individually?是否可以单独自定义 QML TableView headerDelegate?
【发布时间】:2018-05-16 14:23:11
【问题描述】:

在 QML TableView 中,可以使用 headerDelegate 自定义标题,但应用的样式适用于所有列。

例子:

headerDelegate: Rectangle {
    height: 20
    color: "red"

    Text {
        text: styleData.value
        color: "#FFF"
        width: parent.width
        height: parent.height
        font.pointSize: 18
        minimumPointSize: 3
        fontSizeMode: Text.Fit
        horizontalAlignment: Text.AlignHCenter
        verticalAlignment: Text.AlignVCenter
    }
}

是否可以单独应用样式? 例如:在第一列背景蓝色和第二列背景红色

或者是否存在另一种自定义标头的方式?

【问题讨论】:

    标签: qt qml tableview


    【解决方案1】:

    对于 TableView 可能存在更优雅的方式,但自定义委托的常用方法通常是使用提供的信息。

    对于具有不同颜色的基本用例,您可以拥有它:

    headerDelegate: Rectangle {
        color: ["red", "blue"][styleData.column % 2]
    }
    

    对于更复杂的事情,您可以将代理设置为 Loader,它根据您为代理提供的信息加载不同的 sourceComponents

    【讨论】:

    • 基本的用例是有更好的颜色、下拉箭头、适当的边距/填充、调整字段大小的直线,以及可能的边框底线。您的委托甚至不绘制标题文本
    • @IceFire:问题是关于应用样式而不是复制 OP 示例中的行。从他的示例中可以明显看出 OP 能够绘制标题文本。这个答案是故意集中在这个问题上,而不是你可能会看到的任何其他“基本用例”,但 OP 没有要求。如果询问您列出的所有基本用例,该问题将缺乏重点(一次多个问题,请参阅问题的结束原因)
    • 您使用了“基本用例”这个词,在任何专业应用程序中都不是“基本用例”。太多的“让我们把标题改成粉红色”的例子四处飘荡,阻碍了正确的开发,因为你需要先挖掘 10 个例子,直到最后,一个至少与实际应用程序有远程共同点。所以,不,一个更好的答案应该包括我提到的所有事情,因为很多人在这里找到这个帖子寻找一个好的解决方案
    • 当我在专业的嵌入式环境中使用 Qt 开发 UI 时,我从来没有使用过任何下拉箭头或调整线条大小的用例。在问题中也没有要求您的任何需求。问题是,我怎样才能超越 styleData 的限制,只将一种样式应用于所有标题代表。恕我直言,有两个级别:1.(基本)仅在其他相同组件中基于列具有不同的值。 2.(高级)具有不同的组件。但是ofc,你可能在这里找不到你的需求,你可能有你的意见。但也许这是个错误的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多