Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
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, 12:47
Сообщение
#2
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(AD @ 16.7.2009, 13:41) Link Какую виртуальную функцию виджета надо перехватить при наведении фокуса на визир? если ты под фокусом понимаешь курсор мыши то. это enterEvent() leaveEvent() |
|
|
|
|
AD |
16.7.2009, 13:03
Сообщение
#3
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Еще вопрос: если я внес визир в компоновщик:
Я могу с помощью move() меня его положение? (Необходимо двигать по горизонтали) Если нет, то как заставить его появиться на форме? |
|
|
|
|
kwisp |
16.7.2009, 13:13
Сообщение
#4
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(AD @ 16.7.2009, 14:03) Link Я могу с помощью move() меня его положение? (Необходимо двигать по горизонтали) я так понял что это вопрос. ну не знаю предполагаю что нет. напиши небольшой тестик и посмотри. Цитата(AD @ 16.7.2009, 14:03) Link опять же предполагаю что это не совсем красиво. будет. координаты мыши и левого верхнего угла визира не совпадают же. |
|
|
|
|
AD |
16.7.2009, 13:59
Сообщение
#5
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(kwisp @ 16.7.2009, 14:13) Link опять же предполагаю что это не совсем красиво. будет. координаты мыши и левого верхнего угла визира не совпадают же. Так уже сделал. Ничего не двигается. А как добиться, чтобы в скомпонованном окне стал это визир, нескомпонованный (т.е. не добавлен в компоновщик с помощью addWidget), виден? Вот такой код:
|
|
|
|
|
kwisp |
16.7.2009, 14:38
Сообщение
#6
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(AD @ 16.7.2009, 14:59) Link Так уже сделал. Ничего не двигается. А как добиться, чтобы в скомпонованном окне стал это визир, нескомпонованный (т.е. не добавлен в компоновщик с помощью addWidget), виден? жуть какаято. а просто отдельным окном его никак нельзя сделать. двигай куда хочешь. |
|
|
|
|
AD |
16.7.2009, 14:57
Сообщение
#7
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(kwisp @ 16.7.2009, 15:38) Link жуть какаято. а просто отдельным окном его никак нельзя сделать. двигай куда хочешь. В смысле? Это как? Мне необходимо, чтобы при делании что-то с визиром, были определенные результаты у виджета? Ну т.е. взаимосвязь была... Понимаешь? |
|
|
|
|
kwisp |
16.7.2009, 15:02
Сообщение
#8
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
AD,
что мешает сделать его членом класса виджета но не давать ему parenta он как окно будет самостоятельным в конце концов можно где нить выше по иеррархии отдать указатель на визор виджету. ну как бы тут вариантов куча. |
|
|
|
|
AD |
16.7.2009, 15:33
Сообщение
#9
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Ну с этим вроде разобрался. Я не понимаю двух вещей. Как заставить принимать размеры визира во вертикали те же, что и окна? И как указать мыши, что мы в данной точке сфокусированы на визире, а не на виджете (у QEvent нет функции pos())?
|
|
|
|
|
kwisp |
16.7.2009, 15:45
Сообщение
#10
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
AD,
какие-то концептуальные непонимания. resizeEvent() виджета переопредели в нем напиши визиру принять высоту виджета и всё. Цитата(AD @ 16.7.2009, 16:33) Link И как указать мыши, что мы в данной точке сфокусированы на визире, а не на виджете (у QEvent нет функции pos())? не пойму вопроса. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 12:12 |