首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将TableView与ListModel数据结合在QtQuickControls2中?

如何将TableView与ListModel数据结合在QtQuickControls2中?
EN

Stack Overflow用户
提问于 2020-11-20 07:21:32
回答 1查看 414关注 0票数 1

如何使用样式委托在此表中插入列?

我使用的是QtQuick.Controls 2,所以属于老QtQuick的TableViewColumn不能在这里使用。

https://www.qt.io/blog/2016/10/06/qt-quick-controls-2-1-and-beyond

Quick 1中一些值得注意的缺失特性是Action、SplitView、TableView和TreeView。

如果根本不支持它,那么在QML中形成表的方法是什么?

出路是什么?

代码语言:javascript
复制
import QtQuick.Window 2.12
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Styles 1.4

Window
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    TableView
    {
        height: 200; width: 200
        columnSpacing: 1
        rowSpacing: 1

        x: 10; y: 10

        model: ListModel
        {
            id: mymodel
            ListElement
            {
               aaa : "Banana1"
               bbb : "Apple1"
            }
            ListElement
            {
                aaa : "Banana2"
                bbb : "Apple2"
            }
        }


        delegate: Rectangle
                    {
                        implicitWidth: 100
                        implicitHeight: 50
                        color: "red"
                        border.color: "black"
                        Text
                        {
                            text: mymodel.data(1,"aaa")
                        }
                    }

        MouseArea
        {
            anchors.fill: parent
            onClicked:
            {
                console.log( mymodel.display)
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2020-11-20 14:36:17

你走对了路,只是漏了几分。

请参考您更新的代码,该代码工作:

代码语言:javascript
复制
import QtQuick.Window 2.12
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Styles 1.4

Window {
  visible: true
  width: 640
  height: 480
  title: qsTr("TableView example")

  TableView {
    height: 200
    width: 200
    columnSpacing: 1
    rowSpacing: 1
    x: 10
    y: 10

    model: ListModel {
      id: mymodel
      ListElement {
        aaa : "Banana1"
        bbb : "Apple1"
      }
      ListElement {
        aaa : "Banana2"
        bbb : "Apple2"
      }
    }

    delegate: Rectangle {
      implicitWidth: 100
      implicitHeight: 50
      color: "red"
      border.color: "black"
      Text {
        anchors.centerIn: parent
        text: aaa
      }
      Text {
        color: "cyan"
        anchors {
          bottom: parent.bottom
          horizontalCenter: parent.horizontalCenter
        }
        text: bbb
      }
      MouseArea {
        anchors.fill: parent
        onClicked: {
          console.log("Clicked on delegate:")
          console.log(" - Attached model property:", model)
          console.log(" - Attached model.aaa:", model.aaa)
          console.log(" - Attached model.bbb:", model.bbb)
        }
      }
    }
  }
}

您可以使用ListModel,而不需要使用TableView。要访问内容,您可以通过相应的属性名引用model属性和/或访问(如我的示例所示)。

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

https://stackoverflow.com/questions/64925343

复制
相关文章

相似问题

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