![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#11
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#12
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Двигаемся мышью по виджету. Вдруг наткнулись на визир. Как определить, что мы на визире? ![]() тфу. ну к примеру, см. сообщение№2 |
|
|
AD |
![]()
Сообщение
#13
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Блин, ну не очень понял, как эти функции применить.... Ладно.... разберусь.
А как заставить визир двигаться только по горизонтали, например? |
|
|
AD |
![]()
Сообщение
#14
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Движение визира сделал так, но нет пока, что четкого следования за указателем мыши. Кто подскажет, в чем ошибка?
Движение визира происходит дерганиями, что не соответствует тому, чего хочется получить.
Сообщение отредактировал AD - 21.7.2009, 8:50 |
|
|
AD |
![]()
Сообщение
#15
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Судя по всему, это происходит потому, что вначале попадаем в функцию
void VFFrame::mousePressEvent(QMouseEvent* events), а потом уже в void GraphicDisplay::mousePressEvent(QMouseEvent* events) (для остальных аналогично). А как сделать наоборот? Т.е. чтобы вначале попадали в GraphicDisplay::mousePressEvent, а потом уже в VFFrame::mousePressEvent? Кто-нибудь может хоть подсказать в какую сторону смотреть? Сообщение отредактировал AD - 21.7.2009, 10:51 |
|
|
AD |
![]()
Сообщение
#16
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Попробовал решить указанную выше проблему слотов-сигналов. Не очень удалось. Не могу понять, как мне выйти на нужную координату:
viewfinder
Смысл в том, что во время движения в координату _move_point записывается предыдущее значение, т.к. движение мыша функций GraphicDisplay попадает позже, чем в движение мыша функций VFFrame. Как все-таки добиться эффекта, чтобы в функцию setMovePoint класса VFFrame передавалось значение events -> pos() класса GraphicDisplay? Сообщение отредактировал AD - 23.7.2009, 17:39 |
|
|
AD |
![]()
Сообщение
#17
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Буду рад за любой совет. Уже полторы недели с этим мучаюсь!
|
|
|
AD |
![]()
Сообщение
#18
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
вот рисунок визира:
[attachment=719:uti.JPG] |
|
|
ufna |
![]()
Сообщение
#19
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
не, просто хочется глянуть в динамике что происходит. В какой момент и что. Я словами плохо объясню что хочу увидеть )
кстати, на прог орге совет дали сводящийся вот к чему - в визире ты узнаешь глобальные координаты, затем - переводишь их в систему координат график дисплея. Хотя мне кажется тут ненмого в другом дело. я бы советовал перевести управление движением с визира на дисплей, воспользовавшись переменной-стейтом нажат/не нажат в визире. я сии визиры делаю вообще не отдельными виджетами, а объектами дисплея через QRect и ручную отрисовку. Там тогда все становится очень простым, точным и удобным. P.S. - я оба форума не особо разделяю, тему видел в обоих, ответил просто в том, в который зашел когда было время посмотреть подробнее ![]() Сообщение отредактировал ufna - 24.7.2009, 16:35 |
|
|
AD |
![]()
Сообщение
#20
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Подсказанное решение практически полностью подходит. Ни слоты не нужны, ничего.
Единственное, все-таки курсор идет слегка левее визира. Но основная проблема, по сути, решена. Есть ли возможность попасть ровно под курсор? |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 11.3.2025, 2:50 |