如何使用 QML 中的 TableView 从 QtQuickControls 1 获取列数据?

How to get column data from QtQuickControls 1 with TableView in QML?

我正在使用 import QtQuick.Controls 1.4 as CC。每当我点击第一列时,我得到的输出是未定义的,而我能够获得其余列的数据。

第一列有代表。
从具有委托的第一列获取数据的方法是什么?

import QtQuick.Window 2.12
import QtQuick 2.12
import QtQuick.Controls 1.4 as CC
import QtQuick.Controls.Styles 1.4

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

    CC.TableView
    {
        height: 400; width: 600

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


            rowDelegate: Rectangle
            {
                color: "blue"
                height: 30

                MouseArea
                {
                    id: ma
                    anchors.fill: parent
                    onClicked:
                    {
                        console.log(styleData.value)
                    }
                }

            }

            itemDelegate: Rectangle
            {
                color: "blue"
                height: 30

                Text
                {
                    text: styleData.value
                }

                MouseArea
                {
                    id: ma1
                    anchors.fill: parent
                    onClicked:
                    {
                        console.log(styleData.value)
                    }
                }

            }
        }

        CC.TableViewColumn
        {
            role: "aaa"
            title: "AAA"
            width: 100

            delegate: Item
            {
                Rectangle
                {
                    anchors.left: parent.left
                    id: pic
                    radius: 100
                    height: 15; width: 15; color: "red"
                }

                Text
                {
                    anchors.left: pic.right
                    anchors.leftMargin: 10
                    text: styleData.value
                }
            }
        }
        CC.TableViewColumn
        {
            role: "bbb"
            title: "BBB"
            width: 100
        }

        CC.TableViewColumn
        {
            role: "ccc"
            title: "CCC"
            width: 100
        }

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

对于旧的(编辑过的)问题:
您应该在控制台日志行

中使用 styleData.row 而不是 styleData.value

对于新问题:
您的专栏有一个代表,它覆盖了 table 的项目代表。然后,当点击第一列时,实际上是调用控制台日志的行的委托。

您可以通过将列委托更改为:

来解决此问题
CC.TableViewColumn
{
    role: "aaa"
    title: "AAA"
    width: 100

    delegate: Item
    {
        Rectangle
        {
            anchors.left: parent.left
            id: pic
            radius: 100
            height: 15; width: 15; color: "red"
        }

        Text
        {
            id: text_id
            anchors.left: pic.right
            anchors.leftMargin: 10
            text: styleData.value
        }
        MouseArea
        {
            id: ma2
            anchors.fill: parent
            onClicked: {

                console.log(text_id.text)
            }
        }
    }
}