当前位置:   article > 正文

QML ListView简介

qml listview

1.简介

ListView有一个模型,它定义了要显示的数据,还有一个委托,它定义了数据应该如何显示。ListView中的项是水平或垂直布局的。ListView 继承自 Flickable。

常用属性:

  • count : int:有多少子项
  • model : model:此属性保存为列表提供数据的模型。
  • delegate : Component:定义了数据应该如何显示
  • orientation : enumeration:设置列表的方向是水平还是垂直
  • currentIndex : int:当前项的索引
  • currentItem : Item:当前项
  • highlight : Component:高亮
  • add : Transition:添加项目时的动画
  • remove : Transition:删除项目时的动画
  • move : Transition:移动项目时的动画
  • populate : Transition:为视图创建的项的动画
  • section.criteria : enumeration:分组显示全称还是首字母
  • section.delegate : Component :分组代理
  • section.property : string:每个分组基础的属性的名称。

2.示例

示例1:设置model,设置代理,设置选中高亮,设置文字等属性。

  1. Window {
  2. visible: true
  3. width: 700
  4. height: 700
  5. title: qsTr("Hello World")
  6. ListModel{
  7. id :listModel
  8. ListElement {
  9. name: "Bill Smith"
  10. number: "555 3264"
  11. }
  12. ListElement {
  13. name: "John Brown"
  14. number: "555 8426"
  15. }
  16. ListElement {
  17. name: "Sam Wise"
  18. number: "555 0473"
  19. }
  20. }
  21. ListView{
  22. id:list
  23. spacing: 10
  24. width: 200
  25. height: 500
  26. model: listModel
  27. //orientation: Qt.Horizontal
  28. //highlightFollowsCurrentItem: false
  29. delegate: Rectangle{
  30. width: list.width
  31. height: 50
  32. Text{//设置文字属性
  33. text:name + number
  34. color:"red"
  35. font.bold: true
  36. anchors.centerIn: parent //设置文字居中
  37. }
  38. color:"transparent" //使model的颜色透明,为了显示出highlight颜色
  39. MouseArea{
  40. anchors.fill: parent
  41. onClicked: {
  42. list.currentIndex = index //点击选中哪一项
  43. }
  44. }
  45. }
  46. highlight: Rectangle { //高亮
  47. width: 180
  48. height: 40
  49. color: "black"
  50. y: list.currentItem.y
  51. Behavior on y { //点击选中的时候会有个动画
  52. SpringAnimation {
  53. spring: 3
  54. damping: 0.2
  55. }
  56. }
  57. }
  58. }
  59. }

示例2:设置页脚、页眉,分组显示,代码里有注释。

  1. Window {
  2. visible: true
  3. width: 500
  4. height: 500
  5. title: qsTr("Hello World")
  6. Component {
  7. id: sectionHeading
  8. Rectangle {
  9. width: list.width
  10. height: childrenRect.height
  11. color: "lightsteelblue" // 控制颜色
  12. Text {
  13. text: section
  14. font.bold: true
  15. font.pixelSize: 20
  16. }
  17. }
  18. }
  19. ListModel{
  20. id :listModel
  21. ListElement {
  22. name: "Bill Smith"
  23. number: "555 3264"
  24. size: "small"
  25. }
  26. ListElement {
  27. name: "Bill Smith2"
  28. number: "555 3264"
  29. size: "small"
  30. }
  31. ListElement {
  32. name: "John Brown"
  33. number: "555 8426"
  34. size: "mid"
  35. }
  36. ListElement {
  37. name: "Sam Wise"
  38. number: "555 0473"
  39. size: "big"
  40. }
  41. }
  42. Rectangle{
  43. x:80
  44. y:80
  45. width: 400
  46. height: 400
  47. border.width: 2
  48. border.color: "black"
  49. ListView{
  50. id:list
  51. spacing: 10
  52. width: 200
  53. height: 300
  54. footer: Rectangle{ //设置页脚
  55. height: 20
  56. width: list.width
  57. color: "red"
  58. }
  59. header: Rectangle{ //设置页眉
  60. height: 20
  61. width: list.width
  62. color: "blue"
  63. }
  64. section.property: "size" //设置分组名称
  65. section.criteria: ViewSection.FullString //设置显示全称 还是 首字母
  66. section.delegate: sectionHeading //设置代理
  67. anchors.centerIn: parent
  68. model: listModel
  69. delegate: Rectangle{
  70. width: list.width
  71. height: 50
  72. Text{//设置文字属性
  73. text:name + number
  74. color:"red"
  75. font.bold: true
  76. anchors.centerIn: parent //设置文字居中
  77. }
  78. color:"transparent" //使model的颜色透明,为了显示出highlight颜色
  79. MouseArea{
  80. anchors.fill: parent
  81. onClicked: {
  82. list.currentIndex = index //点击选中哪一项
  83. }
  84. }
  85. }
  86. highlight: Rectangle { //高亮
  87. width: 180
  88. height: 20
  89. color: "black"
  90. }
  91. }
  92. }
  93. }

示例3:设置添加动画,删除、移动等操作动画类似。

  1. Window {
  2. visible: true
  3. width: 500
  4. height: 500
  5. title: qsTr("Hello World")
  6. ListModel{
  7. id :listModel
  8. ListElement {
  9. name: "Bill Smith"
  10. number: "555 3264"
  11. }
  12. ListElement {
  13. name: "John Brown"
  14. number: "555 8426"
  15. }
  16. }
  17. Rectangle{
  18. x:80
  19. y:80
  20. width: 400
  21. height: 400
  22. border.width: 2
  23. border.color: "black"
  24. ListView{
  25. id:list
  26. spacing: 10
  27. width: 200
  28. height: 300
  29. anchors.centerIn: parent
  30. model: listModel
  31. delegate: Rectangle{
  32. width: list.width
  33. height: 50
  34. Text{//设置文字属性
  35. text: name + number
  36. color:"red"
  37. font.bold: true
  38. anchors.centerIn: parent //设置文字居中
  39. }
  40. }
  41. add: Transition {
  42. NumberAnimation { properties: "x,y"; from: 100; duration: 1000 }
  43. }
  44. }
  45. Button{
  46. x:20
  47. y:20
  48. width: 50
  49. height: 50
  50. text: "add"
  51. onClicked: {
  52. var data = {'name':"赵六",'number':"778 0899"}
  53. listModel.append(data);
  54. }
  55. }
  56. }
  57. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号