Перемещение QFrame |
Здравствуйте, гость ( Вход | Регистрация )
Перемещение QFrame |
AD |
16.7.2009, 12:41
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
У меня имеется QFrame (визир) c формой QFrame::VLine. Я переопределяю QFrame, т.е. создал потомка от QFrame. Этот QFrame находится на виджете. У виджета определены функции нажатия, движения и отпускания мыши. У QFrame тоже определены. Как заставить QFrame передвинуться и встать на нужное новое место? При этом хотелось бы, чтобы функции передвижения мыши не вызывались. Я правильно понимаю, что в переопределенном виджете надо как-то перехватывать фокус при наведении на визир и ставить флаг игнорирования, а в функциях переопределения мыши виджета проверять флаг игнора? Какую виртуальную функцию виджета надо перехватить при наведении фокуса на визир?
Вот функции мыша визира:
Вот функция создания визира в виджете:
|
|
|
kwisp |
16.7.2009, 16:11
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Двигаемся мышью по виджету. Вдруг наткнулись на визир. Как определить, что мы на визире? тфу. ну к примеру, см. сообщение№2 |
|
|
AD |
16.7.2009, 16:58
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Блин, ну не очень понял, как эти функции применить.... Ладно.... разберусь.
А как заставить визир двигаться только по горизонтали, например? |
|
|
AD |
21.7.2009, 8:48
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Движение визира сделал так, но нет пока, что четкого следования за указателем мыши. Кто подскажет, в чем ошибка?
Движение визира происходит дерганиями, что не соответствует тому, чего хочется получить.
Сообщение отредактировал AD - 21.7.2009, 8:50 |
|
|
AD |
21.7.2009, 11:16
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Судя по всему, это происходит потому, что вначале попадаем в функцию
void VFFrame::mousePressEvent(QMouseEvent* events), а потом уже в void GraphicDisplay::mousePressEvent(QMouseEvent* events) (для остальных аналогично). А как сделать наоборот? Т.е. чтобы вначале попадали в GraphicDisplay::mousePressEvent, а потом уже в VFFrame::mousePressEvent? Кто-нибудь может хоть подсказать в какую сторону смотреть? Сообщение отредактировал AD - 21.7.2009, 10:51 |
|
|
AD |
23.7.2009, 17:37
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Попробовал решить указанную выше проблему слотов-сигналов. Не очень удалось. Не могу понять, как мне выйти на нужную координату:
viewfinder
Смысл в том, что во время движения в координату _move_point записывается предыдущее значение, т.к. движение мыша функций GraphicDisplay попадает позже, чем в движение мыша функций VFFrame. Как все-таки добиться эффекта, чтобы в функцию setMovePoint класса VFFrame передавалось значение events -> pos() класса GraphicDisplay? Сообщение отредактировал AD - 23.7.2009, 17:39 |
|
|
AD |
24.7.2009, 9:01
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Буду рад за любой совет. Уже полторы недели с этим мучаюсь!
|
|
|
AD |
24.7.2009, 16:19
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
вот рисунок визира:
[attachment=719:uti.JPG] |
|
|
Текстовая версия | Сейчас: 22.12.2024, 7:13 |