首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从QML ListView中的TextEdit获取数据

从QML ListView中的TextEdit获取数据
EN

Stack Overflow用户
提问于 2012-04-04 07:25:06
回答 1查看 1.8K关注 0票数 1

我有一个问题,我找不到解决方案,我希望你能在这里找到它:我做了一个ListView,它的模型和它的代理等等,就像这样:

代码语言:javascript
运行
复制
Item {
id: creation;   width: parent.width ; height: parent.height
.....
ListView {
        id: mainViewLiist
        model: CreationModel {id: modelCreation}
        delegate: delegateCreation
        width: parent.width; height: parent.height;  x: -(screen.width * 1.5);
        cacheBuffer: 100;
    }
}

委托包括文本、TextEdit等...如下所示:

代码语言:javascript
运行
复制
Component {
id: creationDelegate
Item {
    id: itemCreate
   ....
     Row {
                id: rowSerie
                spacing: 5
                Text {
                    id: seriesLabel
                    text: "Series:"
                    ....
                }

                TextEdit {
                    id: seriesTextEdit
                    text: ""
                    ....
                  }
           }
     .... 
    }
....
}

在同一个项"creation“中,还有一个带有两个按钮的ToolBar,类似于:

代码语言:javascript
运行
复制
ToolBar { id: toolBarCreation; height: 40;
    width: parent.width;
    opacity: 1.0
    button1Label: "Back"
    button2Label: "Create"
    onButton1Clicked:
    {
      ...
    }
    onButton2Clicked:
    {
        ...
    }
  }

我想要的是:当我点击第二个按钮"Create“时,我只想用console.log(arg1,...)来显示。在TextEdit中编写的内容称为listView中每一项的"seriesTextEdit“。例如,如果我的列表视图包含10个项目,并且用户在所有项目的所有TexTedit中插入一个值,我如何访问这些数据?非常感谢,Giammarco

EN

回答 1

Stack Overflow用户

发布于 2012-04-05 02:44:30

ListView可能是错误的使用类,因为它销毁了不在可见区域中的项目,并创建了新的可见项目。如果你不想那样做,可以用转发器。

无论如何,您都可以使用ListView.contentItem.children访问ListView的子项。我试过了,它包含了一个额外的元素(可能是头)。

我建议在列表项委托的根目录中为TextEdit文本(在我的示例中为seriesName)设置一个别名属性。您可能需要对索引使用相同的元素,因为如上所述,ListView可能并不包含所有模型项的元素。然后,您可以使用循环来获取文本。

代码语言:javascript
运行
复制
print(mainViewLiist.contentItem.children.length);
for (var i = 0, l = mainViewLiist.contentItem.children.length; i < l; i++) {
    var child = mainViewLiist.contentItem.children[i];
    print(i, ": ", child, "=", child.text);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10002902

复制
相关文章

相似问题

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