• 快速掌握QML ListView添加、删除、修改元素的技巧


    动态添加

    要在QML中动态添加ListElement,可以使用ListModel的append()函数或insert()函数。下面是一个示例:

    1. import QtQuick 2.15
    2. import QtQuick.Controls 2.15
    3. ApplicationWindow {
    4. visible: true
    5. width: 400
    6. height: 200
    7. title: "动态添加ListElement"
    8. ListView {
    9. anchors.fill: parent
    10. model: ListModel {
    11. id: myModel
    12. ListElement { name: "Item 1"; value: 1 }
    13. ListElement { name: "Item 2"; value: 2 }
    14. }
    15. delegate: Item {
    16. width: parent.width
    17. height: 30
    18. Text {
    19. text: name + ": " + value
    20. anchors.centerIn: parent
    21. }
    22. }
    23. Button {
    24. text: "添加Item"
    25. anchors.horizontalCenter: parent.horizontalCenter
    26. anchors.bottom: parent.bottom
    27. onClicked: {
    28. myModel.append({ name: "Item 3", value: 3 });
    29. }
    30. }
    31. }
    32. }

    动态删除

    在QML中,可以通过ListModel的remove()函数来动态删除ListElement数据。下面是一个演示如何动态删除ListElement数据的示例:

    1. import QtQuick 2.15
    2. import QtQuick.Controls 2.15
    3. ApplicationWindow {
    4. visible: true
    5. width: 400
    6. height: 200
    7. title: "动态删除ListElement数据"
    8. ListView {
    9. anchors.fill: parent
    10. model: ListModel {
    11. id: myModel
    12. ListElement { name: "Item 1"; value: 1 }
    13. ListElement { name: "Item 2"; value: 2 }
    14. ListElement { name: "Item 3"; value: 3 }
    15. }
    16. delegate: Item {
    17. width: parent.width
    18. height: 30
    19. Text {
    20. text: name + ": " + value
    21. anchors.centerIn: parent
    22. }
    23. }
    24. Button {
    25. text: "删除Item"
    26. anchors.horizontalCenter: parent.horizontalCenter
    27. anchors.bottom: parent.bottom
    28. onClicked: {
    29. myModel.remove(1); // 删除索引为1的ListElement
    30. }
    31. }
    32. }
    33. }

    动态插入

    在QML中,可以通过ListModel的insert()函数来动态插入ListElement数据。下面是一个演示如何动态插入ListElement数据的示例:

    1. import QtQuick 2.15
    2. import QtQuick.Controls 2.15
    3. ApplicationWindow {
    4. visible: true
    5. width: 400
    6. height: 200
    7. title: "动态插入ListElement数据"
    8. ListView {
    9. anchors.fill: parent
    10. model: ListModel {
    11. id: myModel
    12. ListElement { name: "Item 1"; value: 1 }
    13. ListElement { name: "Item 3"; value: 3 }
    14. }
    15. delegate: Item {
    16. width: parent.width
    17. height: 30
    18. Text {
    19. text: name + ": " + value
    20. anchors.centerIn: parent
    21. }
    22. }
    23. Button {
    24. text: "插入Item"
    25. anchors.horizontalCenter: parent.horizontalCenter
    26. anchors.bottom: parent.bottom
    27. onClicked: {
    28. myModel.insert(1, { name: "Item 2", value: 2 }); // 在索引1处插入新的ListElement
    29. }
    30. }
    31. }
    32. }

    动态修改

    在QML中,可以通过ListModel的set()函数或者直接修改ListElement的属性来动态修改ListElement数据。下面是示例:

    1. import QtQuick 2.15
    2. import QtQuick.Controls 2.15
    3. ApplicationWindow {
    4. visible: true
    5. width: 400
    6. height: 200
    7. title: "动态修改ListElement数据"
    8. ListView {
    9. anchors.fill: parent
    10. model: ListModel {
    11. id: myModel
    12. ListElement { name: "Item 1"; value: 1 }
    13. ListElement { name: "Item 2"; value: 2 }
    14. ListElement { name: "Item 3"; value: 3 }
    15. }
    16. delegate: Item {
    17. width: parent.width
    18. height: 30
    19. Text {
    20. text: name + ": " + value
    21. anchors.centerIn: parent
    22. }
    23. MouseArea {
    24. anchors.fill: parent
    25. onClicked: {
    26. // 修改对应ListElement的value属性
    27. myModel.set(index, { name: name, value: value + 10 });
    28. }
    29. }
    30. }
    31. }
    32. }

  • 相关阅读:
    深度解析Redisson框架的分布式锁运行原理与高级知识点
    android中的Bas64为何缺少 ==
    Redis —— 基础篇
    技术干货|AI框架动静态图统一的思考
    JavaWeb—会话技术
    openstack nova 源码分析
    大数据-玩转数据-Python几种数据采集
    Linux终端快捷键
    普通人下场全球贸易,新一轮结构性机会浮出水面
    java个框架总结二
  • 原文地址:https://blog.csdn.net/h1530687053/article/details/133637460