Russian Qt Forum
Ноябрь 22, 2024, 16:49
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
Помогите разобраться с делегатом.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помогите разобраться с делегатом. (Прочитано 4976 раз)
Вячеслав
Новичок
Offline
Сообщений: 10
Помогите разобраться с делегатом.
«
:
Июль 02, 2016, 11:24 »
Доброе время суток!
Начал тока изучать QT и QML и возникли вопросы которые к сожалению не нашел в интернете.
есть проект на QML в нет GridView (не на весь экран) которые отображает картинки.
мне надо при нажатии на картинку с эмитировать ее перемещение в правый крайний угол экрана при этом сама картинки из GridView никуда не девается.
попытался сделать это внутри делегата - понял что это у меня не получается в связи с не понятными параметрами координат внутри делегата.
сделал отдельный image - который должен наложится на отображение выбранной картинки и уже этот image перемещать.
но не пойму как определить расположение нужного делегата по отношении к экрану.
Заранее спасибо.
Может посоветуете другой вариант решения..
«
Последнее редактирование: Июль 02, 2016, 11:31 от Вячеслав
»
Записан
Отражение луны
Гость
Re: Помогите разобраться с делегатом.
«
Ответ #1 :
Июль 02, 2016, 17:55 »
Координаты внутри элемента считаются всегда относительно координат его родителя. То есть левых верхний угол - это 0,0, а нижний правый - width, height. Кроме того, это будет попросту выходом за пределы делегата. Т.е. это заведомо неправильное с точки зрения дизайна QML решение.
Как же поступить? На самом деле довольно просто. На клик:
1. Создаем свой экземпляр делегата, содержащего изображение, parent должен быть верхний элемент, содержащий всю форму, или же её часть так, чтобы анимация не выходила за границы этого элемента. Для создания есть Component.createObject, то есть в твоем случае это будет что-то вроде myGridItemDelegate.createObject.
2. Устанавливаем ему координаты кликнутого делегата. Для того, чтобы получить правильные координаты относительно другого parentа используется mapToItem.
3. Устанавливаем все параметры делегата так, чтобы они соотвествовали параметрам кликнутого делегата. Ну то есть задаем картинку и прочие параметры. На этом этапе у нас получается 2 идентичных объекта, один лежит в gridе, второй над ним и принадлежит другому родителю.
4. Делаем видимым и анимируем. Для анимации используем SequentialAnimation. Чтобы одна анимация не перекрывала другую - анимации тоже придется создавать динамически, через createObject. Первым делом запускаем любые нужные нам анимации, а затем пихаем туда ScriptAction, в котором вызываем destroy данного объекта и самой анимации. Готово.
На первый взгляд выглядит сложно, но на практике - раз плюнуть.
«
Последнее редактирование: Июль 02, 2016, 17:59 от Komorebi
»
Записан
Вячеслав
Новичок
Offline
Сообщений: 10
Re: Помогите разобраться с делегатом.
«
Ответ #2 :
Июль 02, 2016, 18:24 »
походу вот это я и искал "mapToItem".
Большое спасибо.
Записан
Вячеслав
Новичок
Offline
Сообщений: 10
Re: Помогите разобраться с делегатом.
«
Ответ #3 :
Июль 03, 2016, 01:14 »
Все супер.
Все получилось.
СПАСИБО.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...