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. Qml scaling problem
Forum Updated to NodeBB v4.3 + New Features

Qml scaling problem

Scheduled Pinned Locked Moved QML and Qt Quick
3 Posts 2 Posters 1.5k 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.
  • K Offline
    K Offline
    karenn1
    wrote on last edited by
    #1

    Hello friends,

    I have a grid where I place elements from a panel. I have zoom option implemented with item scale property. The problem is when I applied zoom scale -/+ 0.1 and I want to put an element from the panel on the grid, it's not placed where I point with the mouse. I'm blocked...

    Friends, does anyone have any idea how I coulf fix it?

    Thanks in advance,
    Karen

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mcosta
      wrote on last edited by
      #2

      Hi,

      could you post some slice of your code?

      Once your problem is solved don't forget to:

      • Mark the thread as SOLVED using the Topic Tool menu
      • Vote up the answer(s) that helped you to solve the issue

      You can embed images using (http://imgur.com/) or (http://postimage.org/)

      1 Reply Last reply
      0
      • K Offline
        K Offline
        karenn1
        wrote on last edited by
        #3

        Hi mcosta, here is a javascript file with the logic:

        @var itemComponent = null;
        var draggedItem = null;
        var startingMouse;
        var posnInWindow;
        var posnObject;

        function startDrag(mouse)
        {
        posnInWindow = hallItem.mapToItem(hallEditor, 0, 0);

        startingMouse = { x: mouse.x, y: mouse.y }
        
        loadComponent();
        

        }

        function addTable(object) {
        hallEditor.addTable(object)
        }

        function loadComponent() {
        if (itemComponent != null) {
        createItem();
        return;
        }

        itemComponent = Qt.createComponent(hallItem.componentFile);
        
        if (itemComponent.status === Component.Loading)
            component.statusChanged.connect(createItem);
        else
            createItem();
        

        }

        function createItem() {
        if (itemComponent.status === Component.Ready && draggedItem == null) {
        draggedItem = itemComponent.createObject(hallEditor, {"image": hallItem.image, "x": posnInWindow.x, "y": posnInWindow.y, "z": 1, "scale": hallscene.scale});
        } else if (itemComponent.status === Component.Error) {
        draggedItem = null;
        console.log("error creating component");
        console.log(itemComponent.errorString());
        }
        }

        function continueDrag(mouse)
        {
        if (draggedItem == null)
        return;

        draggedItem.x = mouse.x + posnInWindow.x - startingMouse.x;
        draggedItem.y = mouse.y + posnInWindow.y - startingMouse.y;
        
        var itemPosY = window.doubleToInt((draggedItem.y - hallscene.y) / 20);
        var itemPosX = window.doubleToInt((draggedItem.x - hallscene.x) / 20);
        
        var Object = { x: itemPosX * 20, y: itemPosY * 20, width: draggedItem.width, height: draggedItem.height, numId: draggedItem.numId, rotation: draggedItem.rotation}
        
        hallEditor.isCollisionTest(draggedItem, Object)
        

        }

        function endDrag(mouse)
        {
        if (draggedItem == null)
        return;

        if (draggedItem.x < hallEditorFon.x || draggedItem.y < hallEditorFon.y || draggedItem.x + draggedItem.width > hallEditorFon.width || draggedItem.y + draggedItem.height > hallEditorFon.height || draggedItem.collision) {
            draggedItem.destroy();
            draggedItem = null;
        } else {
            draggedItem.parent = hallscene
            draggedItem.scale = 1;
            draggedItem.numId = hallscene.numTable;
            hallscene.numTable++;
        
            var itemPosY = window.doubleToInt((draggedItem.y + -hallscene.y) / 20);
            var itemPosX = window.doubleToInt((draggedItem.x + -hallscene.x) / 20);
        
            draggedItem.y = itemPosY * 20;
            draggedItem.x = itemPosX * 20;
            draggedItem.created = true;
        

        // console.log("x", draggedItem.x, "y", draggedItem.y);

            hallEditor.push_back(draggedItem)
        
            draggedItem = null;
        }
        

        }
        @

        I used these qml properties:
        @ scale: 1;
        transformOrigin: Item.TopLeft@

        thanks in advance,
        Karen

        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