Название: отваливаются события мыши и клавиатуры Отправлено: joynter от Август 15, 2012, 13:19 с перехватом событий в классе
Код: #include <QWidget> Код: #include <QMainWindow> то события keyPressEvent и mousePressEvent не происходят. пожалуйста объясните почему? на всякий случай main Код: #include "qqq.h" Название: Re: отваливается события мыши и клавиатуры Отправлено: Bepec от Август 15, 2012, 13:25 А зачем они вам виртуальные?
А зачем вам explicit? PS у вас такие хорошие названия переменных и классов - прям вываливаются глазки. Как у картошечки :) Название: Re: отваливается события мыши и клавиатуры Отправлено: joynter от Август 15, 2012, 13:29 А зачем они вам виртуальные? а разве в этом дело?А зачем вам explicit? PS у вас такие хорошие названия переменных и классов - прям вываливаются глазки. Как у картошечки :) explicit вставил автогенератор, а virtual - показывает, что они переопределены. для чистоты эксперимента убрал все explicit и virtual - результат не изменился Название: Re: отваливаются события мыши и клавиатуры Отправлено: Bepec от Август 15, 2012, 14:09 Хз. Просто излишне.
А у вас, извините, show для ttt вызывается? Название: Re: отваливаются события мыши и клавиатуры Отправлено: joynter от Август 15, 2012, 14:56 Хз. Просто излишне. в конструкторе qqq делалА у вас, извините, show для ttt вызывается? t->resize( 1200, 600 ); t->show(); но в этом случае появляются два окна: одно - экземпляр класса ttt, а другое - qqq, и в qqq реакции на клаву и мышь нет. мне нужно, чтобы реакция была только в члене класса qqq Название: Re: отваливаются события мыши и клавиатуры Отправлено: Alex Custov от Август 15, 2012, 15:10 но в этом случае появляются два окна: одно - экземпляр класса ttt, а другое - qqq, и в qqq реакции на клаву и мышь нет. мне нужно, чтобы реакция была только в члене класса qqq события мыши и клавиатуры, которые можно перехватить через данные виртуальные функции, происходят только внутри этого виджета. Если виджет спрятан, то никаких событий он получать не будет. Если нужно перехватывать события внутри всего приложения, то ставь event filter на qApp. Задача к тому же неясна, опиши задачу подробно. Название: Re: отваливаются события мыши и клавиатуры Отправлено: Bepec от Август 15, 2012, 15:12 Проще выражаясь - у тебя окно спрятано -> окно не получает евентов -> не срабатывают слоты.
Тебе надо ему родителя указать qqq. Тогда он будет отображаться НА qqq и перехватывать сигналы в себе. Название: Re: отваливаются события мыши и клавиатуры Отправлено: joynter от Август 15, 2012, 15:17 но в этом случае появляются два окна: одно - экземпляр класса ttt, а другое - qqq, и в qqq реакции на клаву и мышь нет. мне нужно, чтобы реакция была только в члене класса qqq события мыши и клавиатуры, которые можно перехватить через данные виртуальные функции, происходят только внутри этого виджета. Если виджет спрятан, то никаких событий он получать не будет. Если нужно перехватывать события внутри всего приложения, то ставь event filter на qApp. Задача к тому же неясна, опиши задачу подробно. PS: в реальном проекте ситуация еще непонятней: реакция на мышь есть, а вот на клаву - нет Название: Re: отваливаются события мыши и клавиатуры Отправлено: Bepec от Август 15, 2012, 15:29 Сделай проще - используй дизайнер и контекстное меню Promote to...
Добавляй в дизайнере QWidget, тыкай ему протоме и пиши свой класс. И вуаля. Название: Re: отваливаются события мыши и клавиатуры Отправлено: andrew.k от Август 15, 2012, 15:39 Название: Re: отваливается события мыши и клавиатуры Отправлено: andrew.k от Август 15, 2012, 15:41 А зачем они вам виртуальные? а разве в этом дело?А зачем вам explicit? PS у вас такие хорошие названия переменных и классов - прям вываливаются глазки. Как у картошечки :) explicit вставил автогенератор, а virtual - показывает, что они переопределены. для чистоты эксперимента убрал все explicit и virtual - результат не изменился И неужели фантазии не хватает на нормальные имена? Название: Re: отваливаются события мыши и клавиатуры Отправлено: joynter от Август 15, 2012, 16:47 заметил еще такую вещь: если в конструктор qqq добавить setCentralWidget
Код: qqq::qqq(QWidget *parent) : Название: Re: отваливаются события мыши и клавиатуры Отправлено: demaker от Сентябрь 13, 2012, 15:07 :) Да действительно что-то не получается.
попытался так: Код: example::example(QWidget *parent) Код: virtual void keyPressEvent(QKeyEvent* event) ??? Подскажите почему? Название: Re: отваливаются события мыши и клавиатуры Отправлено: demaker от Сентябрь 13, 2012, 15:44 Ради интереса добавил в exmp QTextEdit
Код: #include "exmp.h" и все тоже самое, правда если курсор находится в textedit то qDebug не выводит собщение ??? Название: Re: отваливаются события мыши и клавиатуры Отправлено: Alex Custov от Сентябрь 13, 2012, 15:58 же самое, правда если курсор находится в textedit то qDebug не выводит собщение ??? Естественно, потому что QTextEdit кушает события клавиатуры и не передаёт их наверх своему родителю. Название: Re: отваливаются события мыши и клавиатуры Отправлено: demaker от Сентябрь 13, 2012, 19:31 Но и без QTextEdit тоже самое было, почему ???
Название: Re: отваливаются события мыши и клавиатуры Отправлено: Alex Custov от Сентябрь 13, 2012, 19:36 Но и без QTextEdit тоже самое было, почему ??? никогда такого не делал, да и лень проверять, но почти наверняка события клавиатуры не приходят потому, что виджет не в фокусе. Это дефолтное поведение для обычного QWidget, он не принимает фокус. Возможно, можно починить изменив focusPolicy. Название: Re: отваливаются события мыши и клавиатуры Отправлено: demaker от Сентябрь 14, 2012, 09:29 Попробую ;)
Название: Re: отваливаются события мыши и клавиатуры Отправлено: demaker от Сентябрь 14, 2012, 09:40 Да действительно :)
добавил Код:
и все работает ,спасибо ;) |