Здравствуйте, гость ( Вход | Регистрация )
ernie | Дата 26.4.2011, 13:25 |
wiz29 ,ага ,но пока вроде не вылазит глюк с grab'ом,придётся им пользоваться,вроде как в 4.8 они там с этим собираются что-то решать | |
wiz29 | Дата 26.4.2011, 11:57 |
последнее средство, попробовать написать платформозависимый участок кода, но не факт, что это не глюк видов. | |
ernie | Дата 26.4.2011, 9:33 |
wiz29,нет.Поглядел исходники DockWidget , там они юзают grabMouse() сами,плюс для винды у них используется приватное api grabMouseWhileInWindow(); | |
wiz29 | Дата 26.4.2011, 8:26 |
а принудительно устанавливать фокус не помогает? | |
ernie | Дата 25.4.2011, 18:05 |
С виджета фокус уходит,это точно ,ибо hasFocus() возвращает false , это даже с учётом того,что я поставил eventFilter и офильтровал ParentChangeEvent и LeaveEvent у виджета QApplication::focusWidget возвращает ноль,т.е. как я понимаю фокус вообще уходит В моем случае на виджете вообще фокуса нет,как я понимаю,ибо даже до смены парента,hasFocus возвращает false посмотрел moveEvent,пока кнопку не отожмёшь ни один виджет приложения не воспринимает event этот |
|
wiz29 | Дата 25.4.2011, 17:44 |
а как я могу посмотреть кому в денный момент события мыши приходят и на ком фокус?просто на виджетах в обработчиках поглядеть или есть другой способ что-нибудь вроде QWidget::mouseGrabber? Через QApplication статические методы. а мышиные события только через соответствующие обработчики, конкретных типов виджетов |
|
ernie | Дата 25.4.2011, 17:42 |
а как я могу посмотреть кому в денный момент события мыши приходят и на ком фокус?просто на виджетах в обработчиках поглядеть или есть другой способ что-нибудь вроде QWidget::mouseGrabber? | |
wiz29 | Дата 25.4.2011, 17:39 |
но при этом press на виджете теряется,т.е. надо еще раз на него жать,чтобы тащить его куда-нибудь на ком остается фокус ввода (мыши) и кому продолжают приходить события мыши в этом случае? в твоем случае получается grabMouse() некий костыль, для того чтобы не делать свой DocWidgetArea по сути, мне такая задача предстоит в ближайшей перспективе, тк многие вещи из стандартной реализации библиотеки не устраивают. |
|
ernie | Дата 25.4.2011, 17:32 |
wiz29,проблема в том,что в принципе всё работает,может месяц спокойно отпахать без глюков,но иногда всё ломается,причем по неизвестной причине,помогает только перезагрузка компьютера.Где-то читал,что в винде есть глюк с releaseMouse(),но главная проблема то в том что виджет перестаёт принимать события В общем задача,есть виджет,что-то типа дока,на нём расположены еще виджеты,нужно реализовать перемещение виджетов вне дока по зажатию левой кнопки мыши и движению мыши.Чтобы снять виджет с дока,я ему меняю парента в 0 и двигаю в область нажатия,но при этом press на виджете теряется,т.е. надо еще раз на него жать,чтобы тащить его куда-нибудь |
|
wiz29 | Дата 25.4.2011, 17:26 |
чтобы понять что происходит, нужно детально смотреть код твоего виджета - "перехватчика" мыши. скорее всего просто не вызываешь releaseMouse() в определенный момент. ибо надо чтобы pressEvent сохранился у виджета при смене парента. Что нужно конкретно опиши подробнее. если нужно просто транслировать перемещение мыши из одного виджета в другой то проблем вообще никаких нет... можно и без захвата мыши обойтись. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 18.4.2024, 7:11 |