Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. More GridViews drag and drop
Qt 6.11 is out! See what's new in the release blog

More GridViews drag and drop

Scheduled Pinned Locked Moved QML and Qt Quick
1 Posts 1 Posters 1.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    pajos
    wrote on last edited by
    #1

    Hi everybody,
    I have a problem. Code below imagine gridview PLATFORM and under the one is the second gridview imagine TRAINS ... And I need to move items from TRAINS into the PLATFORM by Drag and drop. The problem is, that I use IndexAt and it works only in one MouseArea. Please help, if somebody knows:

    @//importQtQuick1.0
    importQtQuick1.1
    Rectangle{
    id:rectangle1
    width:1024
    height:768
    color:"#1fdbc8"
    MouseArea{
    id:mouse11
    anchors.fill:parent
    drag.filterChildren:true

    ListModel{
    id:platformList
    ListElement{
    name:"Platform1"
    iColor:"gray"
    iVisible:true
    }
    ListElement{
    iColor:"gray"
    iBorder:2
    }
    ListElement{
    iColor:"gray"
    iBorder:2
    }
    ListElement{
    iColor:"gray"
    iBorder:2
    }
    ListElement{
    iColor:"gray"
    iBorder:2
    }
    }

    ListModel{
    id:trainList
    ListElement{
    name:"Train1"
    iColor:"white"
    iVisible:true
    }
    ListElement{
    name:"Train2"
    iColor:"white"
    iVisible:true
    }
    ListElement{
    name:"Train3"
    iColor:"white"
    iVisible:true
    }
    ListElement{
    name:"Train4"
    iColor:"white"
    iVisible:true
    }
    ListElement{
    name:"Train5"
    iColor:"white"
    iVisible:true
    }
    ListElement{
    name:"Train6"
    iColor:"white"
    iVisible:true
    }
    ListElement{
    name:"Train7"
    iColor:"white"
    iVisible:true
    }
    }

    Component{
    id:platformDelegate
    Item{
    width:grid1.cellWidth
    height:grid1.cellHeight

    Rectangle{
    id:prvek1
    width:grid1.cellWidth
    height:grid1.cellHeight
    color:iColor
    visible:iVisible
    border.width:iBorder
    Text{
    width:parent.width
    horizontalAlignment:Text.AlignHCenter
    font.pixelSize:20
    text:name
    }
    }
    }
    }

    Component{
    id:trainDelegate
    Item{
    width:grid3.cellWidth
    height:grid3.cellHeight

    Rectangle{
    id:prvek3
    state:"inactive"
    //anchors.centerIn:parent
    width:grid3.cellWidth-10
    height:grid3.cellHeight-10
    radius:10
    color:iColor
    visible:iVisible
    Text{
    width:parent.width
    horizontalAlignment:Text.AlignHCenter
    font.pixelSize:20
    text:name
    }
    }

    states:[
    State{
    name:"inDrag"
    when:index==grid3.firstIndexDrag
    PropertyChanges{target:prvek3;parent:container3}
    PropertyChanges{target:prvek3;border.width:2}
    PropertyChanges{target:prvek3;anchors.centerIn:undefined}
    PropertyChanges{target:prvek3;x:coords2.mouseX-prvek3.width/2}
    PropertyChanges{target:prvek3;y:coords2.mouseY-prvek3.height/2}

    },
    State{
    name:"inactive"
    when:(grid3.firstIndexDrag==-1)||(grid.firstIndexDrag==index)
    PropertyChanges{target:prvek3;border.width:10}
    PropertyChanges{target:prvek3;border.width:0}
    }
    ]
    }
    }

    GridView{
    propertyintfID1:-1//FIRSTINDEXDRAG
    id:grid1
    interactive:false
    cellWidth:parent.width/4
    cellHeight:height/5

    height:parent.height/4
    width:parent.width/4

    model:platformList
    delegate:platformDelegate

    Item{
    id:container1
    anchors.fill:parent
    }

    MouseArea{
    id:coords1
    anchors.fill:parent
    onReleased:{
    varnewIndex=grid1.indexAt(mouseX,mouseY);
    varoldIndex=grid1.fID1;
    if(grid1.fID1!=-1&&newIndex!=-1){
    if(newIndex>oldIndex&&grid3.firstIndexDrag){
    platformList.add(newIndex);
    platformList.move(oldIndex,newIndex-1,1);
    }
    else{
    platformList.move(oldIndex,newIndex,1);
    platformList.insert(newIndex+1,{"iColor":"gray","iVisible":true});
    }
    }
    }
    onPressed:{
    grid1.fID1=grid1.indexAt(mouseX,mouseY);
    grid1.fID1=grid1.indexAt(mouseX,mouseY)
    }
    }
    }

    GridView{
    propertyintfirstIndexDrag:-1
    id:grid3
    interactive:false
    cellWidth:grid1.cellWidth
    cellHeight:grid1.cellHeight

    anchors.bottom:parent.bottom

    model:trainList
    delegate:trainDelegate
    flow:GridView.TopToBottom
    height:parent.height/4
    width:parent.width

    Item{
    id:container3
    anchors.fill:parent
    }

    MouseArea{
    id:coords2
    anchors.fill:parent
    //hoverEnabled:true
    onReleased:{
    varnewIndex=grid3.indexAt(mouseX,mouseY);
    varoldIndex=grid3.firstIndexDrag;

    if(grid3.firstIndexDrag!=-1&&newIndex!=-1&&newIndex!=oldIndex){
    if(newIndex>oldIndex){
    trainList.move(oldIndex,newIndex-1,1);
    trainList.move(newIndex,oldIndex,1)
    }else{
    trainList.move(oldIndex,newIndex,1);
    trainList.move(newIndex+1,oldIndex,1);
    }
    }
    grid3.firstIndexDrag=-1;
    grid1.fID1=grid1.indexAt(mouseX,mouseY)
    grid3.firstIndexDrag=grid3.indexAt(mouseX,mouseY)
    }
    onPressed:{
    grid3.firstIndexDrag=grid3.indexAt(mouseX,mouseY);
    }
    }
    }
    }
    }
    @

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved