Qml之自编表格控件(动态)

 时间:2024-10-14 12:45:29

1、 1. 这个表格控件是这样使用的,表格控件分为两个部分,一部分是标题栏,另一部分则为内容。为了使得表格控件区分明朗,我们需要设置ChartTitleBar控件(标题栏)和ChartBar控件(内容栏)。

Qml之自编表格控件(动态)

2、 1. 这里的两个子控件的属性也有点不一样,但有些属性是一样的。 ① 它们都需要设置高度,Ch锾攒揉敫artTitleBar的高度则是标题栏的高度,而ChartBar的高度则是内容栏的高度; ② 但有一个高度需要设置,那就是内容栏的每一行的高度参数属性为selectedHeight。至于颜色就是它们的背景色了,默认是白色的; ③ 标题栏当然需要设置标题,设置标题使用arrayTitle参数,它是数组型数据; ④ 标题栏与内容栏的每一列都是需要宽度的,而宽度的设置则由这一参数实现selectedWidth,这一个参数有点意思的,可以实现指定宽度。 比如有10列每列都是50的宽度,这它的表示为:[“1-10”, 50]。解释一下”1-10”指的是1到10列,而50为宽度;有些读者会问,我不要等分的宽度,我要指定的,这也是可以得。 再打一个比如,标题栏有10列,1到5列宽度20,6-8列宽度50,9-10列宽度80。那么它应该这样表示[[“1-5”, 20], [“6-8”, 50], [“9-10”, 80]]。相信看完这两个例子对这些参数有理解了吧。 ⑤ 还有一个属性就是modelSomeData,它的作用是内容的提供者,而arrayName属性与modelSomeData的内容标识是相对应的。

Qml之自编表格控件(动态)

3、 3.接着就是源码分析了。ChartTitleBar控件在ChartTitleBar.qml里面,图片显示代洁船诼抨码有限我就抽取最核心的代码讲解。 ① 这里使用ListView控件构成标题栏,为什么使用这一个控件呢?关于布局的可以使用Row水平布局,但是这是一个动态的标题栏,Row是程序运行的时候就必须要限定列的大小; ② 而String(arrayTitle[index])参数就是读取标题的每一列内容; ③ Component.onCompleted:这个构造函数除了设置行的宽度,还有一个小作用就是使用listView.model.append()来设置列的多少; ④ 在图片的底部有一个count()函数,笔者认为这里是写得不错的地方,运用的只是也是比较多。请允许我一一道来哈。count()函数调用了一个stringToInt函数该函数作用是将字符串转换为整型。substring()函数则为截取指定字符,indexOf()函数则为匹配到合适字符返回当前位置。 这个那么长的表达式有什么用呢? 举个例子: 假如selectedWidth[i][0]等于字符串”1-10”, 那么selectedWidth[i][0].substring(selectedWidth[i][0].indexOf('-')+1, selectedWidth[i][0].length)就会等于10,而stringToInt(selectedWidth[i][0].substring(0, selectedWidth[i][0].indexOf('-')))就会等于1,它们的作用就是返回列数的。

Qml之自编表格控件(动态)

4、 4. 源码分析内容显示控件ChartBar ① 内容显示控件的原理与标题栏控件原理差不多,这里抽取核心代码讲解; ② 它们的构成是一个大ListView组成的,而一个大的ListView就是显示所有内容了,而所有内容里面又包含着每一行,而每一行作为一个独立的ListView又供显示内容,即ChartBar控件又两个ListView组成; ③ 其实这一控件也是调用了ChartTitleBar控件了,我们换个思路去想,内容的标题就是内容了,当然要重用控件啦;

Qml之自编表格控件(动态)

5、 5.控件ChartBar也是有精妙的地方的,这里这种讲解,茧盯璜阝就是filterArray(index)函数。 ① 这一个函数传入的是delegate属性的足毂忍珩index这个属性必须传入,否则无法工作,作用则是控制get()的值; ② arrayName.length是读数组长度,进行arrayName的过滤; ③ 使用listView.model.get(index-1)[String(arrayName[i])]需要特别特别注意,就是get(index-1),这个因为index是从1计数的,而get()函数是从0有效的,所以要相应地减1; ④ 为什么不直接返回arrayName呢? 因为这里存在一个赋值的问题。这里对property variant arrayName: []这样的数组型数是不能直接使用下标写入的,只能读取。arrayName[1] = 1,这样是错误的。 ⑤ 怎样才能正确写入呢? 使用var array = []这样的变量,array[0] = 1; array[1] = 2。这样是对的因为类型是var,这是只能在js里面操作,然后这样赋值arrayName = array。

Qml之自编表格控件(动态)

6、 6.文件一览与源码下载源码下载: http://download.csdn.net/detail/nicai_xiaoqinxi/9719987

Qml之自编表格控件(动态)
  • 如何使用visio创建一个部门工作流程图?
  • 设置win10快速访问中文档路径
  • acrobat调整页面方向(旋转视图和旋转页面区别
  • 如何解密PDF文件
  • PDF添加竖行文本
  • 热门搜索
    廉洁手抄报资料 孝敬老人的手抄报 创卫手抄报资料 关于孝的手抄报内容 小学三年级手抄报大全 我爱读书手抄报花边 四季手抄报 冬天手抄报 有关于环保的手抄报 感恩的心手抄报大全