Drag and Drop из QML |
Здравствуйте, гость ( Вход | Регистрация )
Drag and Drop из QML |
zoonman |
25.1.2011, 16:11
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 18 Регистрация: 24.1.2011 Пользователь №: 2361 Спасибо сказали: 0 раз(а) Репутация: 0 |
Хочу реализовать перемещение формы и изменение ее размера путем перетаскивания.
Форма не имеет внешних элементов т.е. FramelessWindowHint. Даже по сути формы практически нет, всего лишь QDeclarativeView. С Qt пока только начал разбираться, а с QML вообще 3-й день) В настоящее время время "форма" это просто набор элементов Rectangle. Но хочется менять положение и размеры, т.е. базовый функционал окна. Что почитать на эту тему? |
|
|
zoonman |
28.1.2011, 11:27
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 18 Регистрация: 24.1.2011 Пользователь №: 2361 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ну что же, разобрался я с перетаскиванием формы.
Как это все работает. При нажатии на горячую область в QML вызывается внешний обработчик, в который передаются относительные координаты мыши внутри окна. По сути наступает событие начинаю перетаскивание. При этом во внутренних переменных сохраняется текущее положение курсора. После этого запускается таймер, который будет работать и выдавать сигнал перемещения формы. Внутри обработчика этого сигнала находится код, который говорит о том, куда переместить форму. В моем случае сделано очень примитивно, но рекомендуется проверять, будет ли изменено положение формы, чтобы не вызывать метод move() лишний раз. Как только пользователь отпускает кнопку, срабатывает соответствующий вызов в QML, оттуда он транслируется в программу-контейнер, которая останавливает таймер, тем самым прекращая перемещение. Как это реализовано. Я использовал события onPressed и onReleased для объекта MouseArea.
Из них я вызывал публичные методы созданного мной класса. В onPressed я поместил вызов
А в onReleased
Кстати, конструктор объекта представлен следующим образом
И сам метод перемещения формы
И под конец сама инициализация объекта в main.cpp
Без задания контекста внешние методы вызваны не будут. |
|
|
d2r |
24.3.2011, 8:01
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 24.3.2011 Пользователь №: 2534 Спасибо сказали: 1 раз(а) Репутация: 0 |
блин, и у тебя работает? А можешь показать реализацию Muse? Скока не пробовал ниче не получилось
|
|
|
d2r |
25.3.2011, 13:51
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 24.3.2011 Пользователь №: 2534 Спасибо сказали: 1 раз(а) Репутация: 0 |
Таки разобрался, два этих метода (onPressed и onReleased) объявил с макросом Q_INVOCABLE
|
|
|
Текстовая версия | Сейчас: 26.12.2024, 15:48 |