QML学习笔记(七)— 实现可拖拽、编辑、选中的ListView
鼠标单击可选中当前项,头部呈绿色显示;按压当前项可进行拖拽更换列表项位置;点击数据可以进行编辑;
GitHub:八至
作者:狐狸家的鱼
这里是自己定义的model,有些字体和颜色都是使用的全局属性,
- ListView{
- id:thelist
- property bool isClicked: false //初始化没有点击事件
- anchors.fill: parent
- clip:true
- interactive: !isClicked
- focus: true
- flickableDirection: Flickable.VerticalFlick
- boundsBehavior: Flickable.StopAtBounds
- ScrollBar.vertical: ScrollBar {id:scrollBar;active: true;}
- Keys.onUpPressed: scrollBar.decrease()
- Keys.onDownPressed: scrollBar.increase()
- move:Transition {
- NumberAnimation{
- properties: "x,y";
- duration: 300
- }
- }
- anchors {
- left: parent.left; top: parent.top; right: parent.right;
- margins: 2
- }
- spacing: 4
- cacheBuffer: 50
- //model: anAirModel
- model: ListModel{
- id:sstpModel;
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高 ALT-高度
- status:"TAI"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//departureTime 起飞时间 离港时间
- arrivalTime:"1423"// arrivalTime到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//takeOffRunway 起飞跑道
- landingRunway:"xx"//landingRunway 降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高
- status:"HANDOVER"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//起飞时间 离港时间
- arrivalTime:"1423"//到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//起飞跑道
- landingRunway:"xx"//降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高
- status:"CLR"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//起飞时间 离港时间
- arrivalTime:"1423"//到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//起飞跑道
- landingRunway:"xx"//降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高
- status:"OFF"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//起飞时间 离港时间
- arrivalTime:"1423"//到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//起飞跑道
- landingRunway:"xx"//降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高
- status:"DESCENT"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//起飞时间 离港时间
- arrivalTime:"1423"//到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//起飞跑道
- landingRunway:"xx"//降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高
- status:"DISENGAGE"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//起飞时间 离港时间
- arrivalTime:"1423"//到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//起飞跑道
- landingRunway:"xx"//降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- ListElement{
- air_iden:"CES5401"//呼号 航班号
- type:"A319"//机型
- el:"07056"//机场标高
- status:"TAI"// 管制按钮 HANDOVER-移交 CLR-放行 TAI-滑行 OFF-起飞 DESCENT-降落 DISENGAGE-脱离
- etd:"1215"//预计离港时间
- eta:"1413"//预计到达时间
- departureTime:"1215"//起飞时间 离港时间
- arrivalTime:"1423"//到达时间 到港时间
- ades:"ZSPD"//到达机场 目的地
- takeOffRunway:"xx"//起飞跑道
- landingRunway:"xx"//降落跑道
- procedure:"xxx"//进离场程序
- //tas:"K0860"//巡航速度 860km/h
- //waypoint1:"TEBUN";//航路点
- //assr:"6255"//应答机编码
- //cvsm:"S0820"//对应高度层 82km
- }
- }
- delegate:Rectangle{
- id:sstpDelegate
- property int fromIndex:0
- property int toIndex:0
- width: parent.width
- height: 80
- MouseArea {
- id:mousearea
- anchors.fill: parent
- onClicked: {
- thelist.currentIndex = index
- }
- onPressed: {
- thelist.currentIndex = index
- sstpDelegate.fromIndex = index
- thelist.isClicked = true //每项按钮点击就true
- }
- onReleased: {
- thelist.isClicked = false //每项按钮点击就false
- console.log("fromIndex:",sstpDelegate.fromIndex,"toIndex:",sstpDelegate.toIndex)
- }
- onPositionChanged: {
- var lastIndex = thelist.indexAt(mousearea.mouseX + sstpDelegate.x,mousearea.mouseY + sstpDelegate.y);
- if ((lastIndex < 0) || (lastIndex > sstpModel.rowCount()))
- return;
- if (index !== lastIndex){
- sstpModel.move(index, lastIndex, 1);
- }
- sstpDelegate.toIndex = lastIndex;
- }
- }
- Row{
- Rectangle{
- id:curRect
- width: 5
- height: sstpDelegate.height
- color: index===thelist.currentIndex ? Global.GlobalVar.sstpCurIndex : Global.GlobalVar.mainFontColor//选中颜色设置
- }
- Rectangle{//info
- id:infoRect
- width: sstpDelegate.width - controlRect.width - 5
- height: sstpDelegate.height
- RowLayout{
- spacing: Global.GlobalVar.space*4
- anchors.left: parent.left
- anchors.leftMargin: Global.GlobalVar.space
- ColumnLayout{
- spacing: Global.GlobalVar.space
- MyText{//航班呼号
- text: air_iden
- fontColor: b1
- fontSize: xl
- }
- TextInput{//预计起飞时间
- text: etd
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- onEditingFinished: {
- }
- }
- TextInput{//起飞时间
- text: departureTime
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- onEditingFinished: {
- }
- }
- }
- ColumnLayout{
- spacing: Global.GlobalVar.space
- MyText{//飞行机型
- text: type
- fontColor: b1
- fontSize: m
- }
- TextInput{//预计到达时间
- text: eta
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- onEditingFinished: {
- }
- }
- TextInput{//到达时间
- text: arrivalTime
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- onEditingFinished: {
- }
- }
- }
- ColumnLayout{
- spacing: Global.GlobalVar.space*4
- MyText{//机场标高
- text: el
- fontColor: b1
- fontSize: m
- }
- TextInput{//目的机场
- text: ades
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- onEditingFinished: {
- }
- }
- }
- ColumnLayout{
- spacing: Global.GlobalVar.space*4
- TextInput{//起飞跑道
- text: takeOffRunway
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- }
- TextInput{//进离场程序
- text: procedure
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- onEditingFinished: {
- }
- }
- }
- TextInput{//降落跑道
- anchors.top: parent.top
- text: takeOffRunway
- color: Global.GlobalVar.mainFontColor
- font.pointSize: 12
- }
- }
- }
- RecLine{id:recLine;direction:false}
- Rectangle{
- id:controlRect
- width: 100
- height: sstpDelegate.height
- ColumnLayout{
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.verticalCenter: parent.verticalCenter
- BorderButton{
- implicitWidth: 80
- implicitHeight: 30
- borderbtnText: status
- fontSize: 10
- MouseArea{
- anchors.fill: parent
- }
- }
- MyText{
- anchors.horizontalCenter: parent.horizontalCenter
- font.family: "FontAwesome"
- text: '\uf014'
- fontSize: xl
- MouseArea{
- anchors.fill: parent
- onClicked: an_del.open()
- }
- }
- }
- }
- }
- }
- IsDelDialog{id:an_del;x:SSTPWind.width/2;y:SSTPWind.height/2;}
- Connections{
- target: an_del.del_area;
- onClicked:{
- //anAirModel.remove(thelist.currentIndex)
- sstpModel.remove(thelist.currentIndex)
- an_del.close()
- }
- }
- }
关于拖拽,参考https://blog.csdn.net/zhengtianzuo06/article/details/78631977,由于设置交互事件,会影响鼠标滚动和拖拽,所以进行了修改
- interactive: !isClicked
这样就不会影响拖拽和鼠标滚动了。
QML学习笔记(七)— 实现可拖拽、编辑、选中的ListView的更多相关文章
- Bootstrap学习笔记之Nestable可拖拽树结构
Nestable是基于Bootstrap的一个可拖拽的树结构表现插件. 下面粗略的介绍一下它的用法,只作为学习参考,如有不合适之处,请各位凑合看. 下图是我在现在系统中用到的Nestable,对系统模 ...
- OpenLayers学习笔记(六)— 拖拽叠加层overlayer
是在官网例子基础上增加的拖拽功能 GitHub:八至 作者:狐狸家的鱼 本文链接:拖拽叠加层overlayer 全部代码 <!DOCTYPE html> <html> < ...
- OpenLayers学习笔记(五)— 拖拽Feature图层
参考文档的例子可以知道如何拖动矢量图层feature GitHub: 八至 作者:狐狸家的鱼 本文链接:拖拽Feature图层 全部代码 <!DOCTYPE html> <html& ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- QML学习笔记(六)- 简单计时器和定时器
做一个简单的qml计时器和定时器,左键触发计时,右键触发定时 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(六)- 简单计时器和定时器 左键点击按钮,触发计时器,中键可以暂停计时,同 ...
- QML学习笔记(五)— 做一个简单的待做事项列表
做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
随机推荐
- CentOS7 下面安装jdk1.8
1. 卸载已有的jdk rpm -qa |grep jdk |xargs rpm -e --nodeps 2. 使用xftp上传 jdk 的文件我这里上传的是 jdk-8u121-linux-x64. ...
- [转帖]oracle改版sql server问题点汇总
https://www.cnblogs.com/zhangdk/p/oracle_sqlserver.html 只记得 最开始的时候看过 没有具体的了解里面的特点 原作者总结的很好 留下来 以后说不定 ...
- vue的地图插件amap
https://www.jianshu.com/p/0011996b81e2(amap) npm install vue-amap --save
- Microsoft Visual Studio Ultimate 2013密钥
Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9Visual Studio Premium 2013 KEY(密钥): ...
- linux之硬盘管理fdisk
1.首先我们用虚拟机模拟服务器加入一块新的硬盘,硬盘容量入下图5GB硬盘. 2.首先我们要对它进行分区,我们从上面知道需要分区格式化的是第二块硬盘. 3.输入n回车是新建分区,p是主分区(只能建立4个 ...
- @Autowired 与@Resource的区别(详细)
参考:@Autowired 与@Resource的区别(详细) spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@Pos ...
- js外部调用layui.use中的函数的写法
layui模块化的写法固然不错,但也有让人不适应的一些地方 外部调用函数的写法就让人不太舒服 需要在函数名前面加上window这个前缀,就不太舒服 补充:window前缀,是全局变量的声明方式 如下: ...
- fiddler 学习笔记1-下载安装、开启、关闭抓包功能
1 下载安装(安装于C盘之外的空间中) https://www.telerik.com/fiddler 2 开启抓包功能:安装后默认为开启状态 点击 file-capture 或左下角capture ...
- Missing artifact com.oracle:ojdbc6:jar:11.2.0.3 Maven中不能引入ojdbc解决方法,错误
今天从服务器检出Maven项目的时候,遇到了一个问题,就是在pom.xml中引入ojdbc的jar包的时候出错了,提示是Missing artifact com.oracle:ojdbc6:jar:1 ...
- 二、core abp 数据库迁移
一.数据库迁移-ABP(库) 1.配置链接数据库: 贴以下代码: { "ConnectionStrings": { "Default": "Serv ...