Всем доброго дня!
Пытаюсь поимать событие по нажтию на TextItem.
C++ (Qt)
class TextItem: public QGraphicsTextItem
{
...
public:
enum { TEXT = UserType + 4 };
int type() const { return TEXT; }
protected:
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent * event);
}
void TextItem::mousePressEvent(QGraphicsSceneMouseEvent * event)
{
setTextInteractionFlags(Qt::TextEditorInteraction);
setFocus();
QGraphicsTextItem::mousePressEvent(event);
}
Экземпляр объекта размещен внутри двух групп: Group1, Group2
C++ (Qt)
class Group1: public QGraphicsItemGroup
{
...
public:
void paint(QPainter *painter, const QStyleOptionGraphicsItem * option, QWidget *widget);
QRectF boundingRect() const;
private:
Group2 group2;
}
Group1::Group1(QGraphicsItem *parent) : QGraphicsItem(parent)
{
addToGroup(group2);
}
void Group1::paint(QPainter *painter, const QStyleOptionGraphicsItem * option, QWidget *widget)
{
group2.setPos(5,5);
...
}
C++ (Qt)
class Group2: public QGraphicsItemGroup
{
...
public:
void paint(QPainter *painter, const QStyleOptionGraphicsItem * option, QWidget *widget);
QRectF boundingRect() const;
private:
TextItem *txtiIem;
}
Group2::Group2(QGraphicsItem *parent) : QGraphicsItem(parent)
{
textItem = new TextItem("Hello");
addToGroup(textItem);
}
void Group2::paint(QPainter *painter, const QStyleOptionGraphicsItem * option, QWidget *widget)
{
textItem->setPos(10,10);
}
C++ (Qt)
class Scene : public QGraphicsScene
{
...
protected:
void mousePressEvent(QGraphicsSceneMouseEvent * event);
private:
Group1 group1;
}
Сцена и обработчик нажатия мыши
Scene::Scene(QObject*parent) : QGraphicsScene(parent)
{
addItem(&group1);
group1.setPos(10, 10)
}
//Обработка события нажатия мыши на сцене
void Scene::mousePressEvent(QGraphicsSceneMouseEvent * event)
{
QGraphicsItem *item = itemAt(event->scenePos());
//если это TextItem
if(item && item->type() == TextItem::TEXT){
sendEvent(item,event);
}
}
Почему-то обработка события нажатия клавиши мыши на сцене не доходит до TextItem::mousePressEvent(QGraphicsSceneMouseEvent * event)
Если TextItem размещен непосредственно на сцене
Scene::Scene(QObject*parent) : QGraphicsScene(parent)
{
TextItem *textItem = new TextItem("fjgkjfgfd");
addItem(textItem);
textItem->setPos(10, 10);
}
то все норм событие орабатывается нормально!
Подскажите что делаю не так???