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