Здравствуйте, гость ( Вход | Регистрация )
igor_bogomolov | Дата 5.10.2010, 14:19 |
заменили на Цитата void QGraphicsItem::setFiltersChildEvents ( bool enabled ) Вот те на, setFiltersChildEvents для групп не работает так же как setHandlesChildEvents. Поэтому пока можно использовать только последнюю, не смотря на то, что она устарела QTBUG-6861 |
|
quarz | Дата 5.10.2010, 13:53 |
Спасибо, Игорь. Тоже нашел этот метод и как раз искал, чем его заменили в новой версии. Но с ним работает | |
igor_bogomolov | Дата 5.10.2010, 13:46 |
Попробуй установить для группы свойство
Этот метод сейчас правда считается устаревшим. Я не знаю чем его заменили, но найти будет не сложно |
|
quarz | Дата 5.10.2010, 13:28 |
Попробую описать проще: Есть класс, производный от QGraphicsItemGroup. В нем переопределен MousePressEvent. в эту группу добавлен класс, производный от QGraphicsItem, в котором тоже переоределен MousePressEvent. Надо чтоб группа и Item ловили только свои события. Т.е. если я кликну мышью над Item`ом - событие возникло у него, а если вне этого Item`а, на группе - то событие возникло у группы. Сейчас же все события приходят в группу. |
|
quarz | Дата 5.10.2010, 11:54 |
return QWidget::keyPressEvent(event); есть это у тебя? да, я вызываю в обработчике QGraphicsItemGroup::mousePressEvent(event). Кстати, если маркер положить на сцену, не прописывая ему родителя, то все работает. Видимо дело в том, что у родителя (KeyboardItem) переопределено mousePressEvent. Но я же вызываю в нем QGraphicsItemGroup::mousePressEvent(event), значит событие должно передаваться и другим Item`ам на сцене, находящимся в этой точке, а оно почему-то не передается. |
|
kwisp | Дата 5.10.2010, 9:51 |
В чем я ошибся? возможно в обработчике нажатия клавиши с последующей заменой ты не передаёшь событие дальше.... в конце блока обработчика должно быть что то подобное этому return QWidget::keyPressEvent(event); есть это у тебя? на счет того что событие не приходит в маркер первым это возможно фокус ввода влияет на положение дела. |
|
quarz | Дата 5.10.2010, 2:18 |
Есть класс KeyboardItem - это itemGroup, содержащий клавиши клавиатуры.
При нажатии на клавиатуру определяю какая клавиша находилась под мышью и заменяю ее на нажатую. Еще у меня есть маркер, который представляет собой Item, рисующийся поверх клавиатуры. Его родителем является KeyboardItem
Маркер находится всегда выше всех клавиш по оси z. Значит, при клике по нему, событие MousePressEvent должно в первую очередь приходить к маркеру, а не к клавиатуре. А получается так, что событие нажатия никогда не доходит до маркера. В чем я ошибся? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 4.12.2024, 15:27 |