Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Fregloin от Январь 26, 2012, 11:55



Название: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: Fregloin от Январь 26, 2012, 11:55
Нужно расположить полупрозрачный прямоугольник над другими элементами так, что бы он отображался, но все события мыши игнорировал и пропускал через себя элементам, которые расположены под ним. Можно ли этого добиться?


Название: Re: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: fabricant от Февраль 13, 2012, 11:51
http://www.prog.org.ru/topic_20393_0.html
вроде на эту тему топик


Название: Re: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: artiom_kh от Март 02, 2012, 12:15
перегрузи QGraphicsItem::shape в таком виде:
Код
C++ (Qt)
class MyItem : public QGraphicsItem
{
public:
  virtual QPainterPath shape( void ) const { return QPainterPath(); }
};


Название: Re: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: Fregloin от Октябрь 26, 2013, 01:18
Работает частично.
Короче суть такая, при копировании элементов на сцене я их клонирую, и клоны добавляю в группу. Потом при двидении мыши я перемещаю эту группу предвариетльно отцентрировав. при нажатии мыши группа должна удалиться, а из буфера должны вставиться новые. так вот, если например выделено два квадрата, они находятся друг от друга на некотором расстоянии и я вожу мышью, потом нажимаю кнопку - сцена отлавливает событие. Если же допустим в группе только один элемент и при нажатии мышью клик приходится на этот дочерний элемент - сцена не получает событие. пробовал вышеизложенные методы - не работают.


Название: Re: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: AlFoX от Октябрь 26, 2013, 05:01
item->setFlag(QGraphicsItem::ItemIsSelectable, false);


Название: Re: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: Fregloin от Октябрь 26, 2013, 10:02
тоже опробовано - не работает...


Название: Re: Как сделать QGraphicsObject(Item) "прозрачным" для мыши?
Отправлено: Fregloin от Октябрь 26, 2013, 10:15
разобрался, внутренняя логика актера сцены тупит, изза того что клик фактически приходится на клона элемента, но он не зарегестрирован. буду проверять на принадлежность к группе. поидее должно сработать. но все равно, сцена не получает сообщение что клик сделан по группе, а именно по элементу.