Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
breeve |
17.5.2010, 9:35
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1
|
Сабж. Есть popup окно и нужно сделать чтобы его можно было двигать. Не могу найти..
Сообщение отредактировал breeve - 17.5.2010, 9:36 |
|
|
|
|
kibsoft |
17.5.2010, 11:04
Сообщение
#2
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: 2
|
Цитата(breeve @ 17.5.2010, 10:35) Link Сабж. Есть popup окно и нужно сделать чтобы его можно было двигать. Не могу найти.. Ну обрабатывать на QWidget::mousePressEvent(),, заканчивать на QWidget::mouseReleaseEvent(). Когда клавиша зажата, то обрабатывать событие QWidget::mouseMoveEvent()(двигать виджет настолько, насколько подвинут курсор), предварительно включив QWidget::setMouseTracking() у виджета. Примерно так. |
|
|
|
|
Litkevich Yuriy |
17.5.2010, 12:21
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(kibsoft @ 17.5.2010, 15:04) Link предварительно включив QWidget::setMouseTracking() если мыша двигается с нажатой кнопкой, то слежение включается автоматически.
|
|
|
|
|
breeve |
17.5.2010, 12:36
Сообщение
#4
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1
|
Не понятно каким образом двигать?
Переопределяю mousePressEvent. Пишу, если нажата левая клавиша то.. А двигать то как? В ручную? Каким обрабатывать событие QWidget::mouseMoveEvent()? Сообщение отредактировал breeve - 17.5.2010, 12:38 |
|
|
|
|
Litkevich Yuriy |
17.5.2010, 12:39
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(breeve @ 17.5.2010, 16:36) Link А двигать то как? В ручную? ну почти. В обработчике нажатия ставь флажок "начали двигать", в обработчике отпускания снимай его. А в обработчике движения смотри. если флажок стоит, спрашивай у объекта события текущее смещение координаты и на это смещение двигай виджет.
|
|
|
|
|
breeve |
17.5.2010, 12:47
Сообщение
#6
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1
|
Сообщение отредактировал breeve - 17.5.2010, 12:49 |
|
|
|
|
Litkevich Yuriy |
17.5.2010, 12:52
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
чёт я с событием колеса перепутал, у этого нет дельты, её надо самому считать, т.е. при нажатии запоминать текущую, а при перемещении вычислять дельту.
П.С. в доке по mouseMoveEvent для перемещения виджетов настоятельно рекомендуют использовать QMouseEvent::globalPos вместо всех остальных вариантов |
|
|
|
|
breeve |
17.5.2010, 13:14
Сообщение
#8
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1
|
Вот если кому надо, рабочий вариант:
Остался один не понятный момент. Если у меня окно стоит с флагом Qt::Window. То все работает правильно. Если же я выставляю Qt::ToolTip или Qt::Popup, то если я хоть раз нажму на другое окно то я больше не смогу его сдвинуть. Не понятно почему. Сообщение отредактировал breeve - 17.5.2010, 13:12 |
|
|
|
|
Litkevich Yuriy |
17.5.2010, 16:50
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(breeve @ 17.5.2010, 17:14) Link Если же я выставляю Qt::ToolTip или Qt::Popup, то если я хоть раз нажму на другое окно то я больше не смогу его сдвинуть. Не понятно почему. ну добавь в обработчики отладочные сообщения, и посмотри. Заходит ли программа в них или нет
|
|
|
|
|
gxoptg |
14.12.2011, 20:38
Сообщение
#10
|
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.8.2011 Пользователь №: 2817 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата а зачем вообще этот фрагмент? без него всё нормально работает, и заодно исправляется это: Цитата Если же я выставляю Qt::ToolTip или Qt::Popup, то если я хоть раз нажму на другое окно то я больше не смогу его сдвинуть. Не понятно почему.
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 25.12.2025, 0:32 |