首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QML中使用QtQuickControls 1使用QtQuickControls 1获取列数据?

如何在QML中使用QtQuickControls 1使用QtQuickControls 1获取列数据?
EN

Stack Overflow用户
提问于 2020-11-20 08:07:49
回答 1查看 269关注 0票数 0

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

第一列有一个委托。

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

代码语言:javascript
复制
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"
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 08:59:51

用于旧的(编辑)问题:

您应该在控制台日志行中使用styleData.row而不是styleData.value

用于新问题:

您的列有一个委托,它重写表的项委托。然后,当单击第一列时,调用控制台日志的实际上是行的委托。

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

代码语言:javascript
复制
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)
            }
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64925864

复制
相关文章

相似问题

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