Pavel K.
Pavel K.20 вересня 2019 р. 04:56

Работа с MultiPointTouchArea (drag n drop + zoom)

QML C++

Привет , подскажите кто-нибудь , как сделать драг н дроп , не нарушая при этом логику работы зума?

import QtQuick 2.6 
import QtGraphicalEffects 1.0 

Page {
    id:win
    property string filepath
//    width:parent.width * 0.5
//    height:parent.height * 0.5

    MultiPointTouchArea {
        id: multiPoint
        anchors.fill: parent
        maximumTouchPoints : 2
        minimumTouchPoints : 1
        touchPoints: [
            TouchPoint { id: point1 },
            TouchPoint { id: point2 }
        ]
        property real factor: 1
        property bool isReleased: false // ignore the TouchUpdate after released
        onTouchUpdated: {
            console.log("touch upd")
            if(isReleased){
                isReleased = false
                return
            }
            if(point1.x != 0 && point2.x != 0){
                var s = Math.sqrt(Math.pow(point1.x - point2.x, 2) + Math.pow(point1.y - point2.y, 2)) /
                        Math.sqrt(Math.pow(point1.startX - point2.startX, 2) + Math.pow(point1.startY - point2.startY, 2))
                rect.scale = s * factor
            } else {
                rect.beginDrag = Qt.point(rect.x, rect.y) ?????????
            }
        } 
        onReleased: {
            console.log("realesed upd")
            multiPoint.factor = rect.scale
            isReleased = true
        }
        Rectangle {
            id: rect
            width: Screen.width
            height: Screen.height
            z: mouseArea.drag.active ||  mouseArea.pressed ? 2 : 1
            x: 0 //Math.random() * (win.width / 2 - 100)
            y: 0 
            property point beginDrag
            color : "transparent"
            border { width:2; color: "transparent" }
            radius: 5
            Drag.active: mouseArea.drag.active
            Image {
                id: image
                width: rect.width
                height: rect.height
                anchors.centerIn: parent
                fillMode: Image.PreserveAspectFit
                source: filepath 
            }
//            MouseArea {
//                id: mouseArea

//                anchors.fill: image
//                drag.target: rect
//                enabled:multiPoint.isReleased
//                visible: multiPoint.isReleased
//                onPressed: {
//                    console.log("mouse pressed + state: " + isReleased)
//                        rect.beginDrag = Qt.point(rect.x, rect.y)
//                }
//            }
        }
    }
}


Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

0

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
sf

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:90бали,
  • Рейтинг балів8
МВ

Qt - Тест 001. Сигналы и слоты

  • Результат:68бали,
  • Рейтинг балів-1
ЛС

C++ - Тест 001. Первая программа и типы данных

  • Результат:53бали,
  • Рейтинг балів-4
Останні коментарі
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr08 лютого 2024 р. 18:43
Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий Кононенко05 лютого 2024 р. 01:50
Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Тепер обговоріть на форумі
J
JacobFib17 жовтня 2024 р. 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
ИМ
Игорь Максимов03 жовтня 2024 р. 04:05
Реализация навигации по разделам Спасибо Евгений!
JW
Jhon Wick01 жовтня 2024 р. 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27 вересня 2024 р. 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22 липня 2024 р. 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Слідкуйте за нами в соціальних мережах