首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtQuick2中TableViewColumn的TableViewColumn替换

QtQuick2中TableViewColumn的TableViewColumn替换
EN

Stack Overflow用户
提问于 2020-10-17 13:56:47
回答 1查看 2.3K关注 0票数 1

在Quick 1中,我们可以使用TableViewColumn对来自模型的不同列进行样式设置

代码语言:javascript
复制
TableView {

    anchors.fill: parent

    TableViewColumn {title: "1"; role: "one"; width: 70 }
    TableViewColumn {title: "2"; role: "two"; width: 70   }
    TableViewColumn {title: "3"; role: "three"; width: 70 }

    model: theModel

}

如果没有更多的TableViewColumn用于TableView,我们如何在QtQuick2中实现类似的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-21 13:12:24

从QT5.12开始,您可以使用TableView QML类型。但是要想拥有您想要的一切,您需要包含Qt.labs.qmlmodels。所有这些都可以在QT5.15中使用(使用在线安装程序)。

实际的实现很难取决于您的需求,但是下面是一个如何实现的示例。

  • 假设您将使用TableView显示一些JSON格式的数据。在本例中,TableModel将是非常适合的,因为它设计用于处理JavaScript/JSON数据,其中每一行都是一个简单的密钥对对象,而不需要在C++中创建自定义QAbstractTableModel子类。
  • 您需要通过使用TableModelColumn (例如:TableModelColumn { display: "checked" } )来声明模型中需要有哪些列。
  • 要将真实数据加载到模型中,请使用其rows属性;数据应以行数组的形式出现,例如:
代码语言:javascript
复制
rows: [
        // Each property is one cell/column.
        {
          checked: false,
          amount: 1,
          type: "Apple",
          price: 1.50
        },
        {
          checked: true,
          amount: 4,
          type: "Orange",
          price: 2.50
        },
        ...
      ]
  • 这里最有趣的部分是委托的应用--这里是DelegateChooser,因为它允许视图对模型中不同类型的项使用不同的委托。所以在这里,你几乎可以做任何事情来调整你的细胞。例如:您可以使用ProgressBar组件作为单元格的委托:
代码语言:javascript
复制
DelegateChoice {
  column: 1
  delegate: ProgressBar {
    enabled: false
    width: 100
    from: 0.0
    to: 10.0
    value: model.display
  }
}

因此,您可以很容易地在QML中获得这个应用程序(需要使用C++和/或旧的QtQuick.Controls):

请参考这个储存库获得完整的申请。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64403258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档