PDA

View Full Version : capture key press and release event in QGraphicsScene subclass



sajis997
12th November 2011, 15:48
Hello forum


I have the following class memeber functions that tries to capture the key press and release events, but none of them is captured.




class DiagramScene : public QGraphicsScene
{
Q_OBJECT

public:
enum Mode { InsertItem, InsertLine, InsertText, MoveItem };

DiagramScene(QMenu *itemMenu, QObject *parent = 0);
QFont font() const
{ return myFont; }
QColor textColor() const
{ return myTextColor; }
QColor itemColor() const
{ return myItemColor; }
QColor lineColor() const
{ return myLineColor; }
void setLineColor(const QColor &color);
void setTextColor(const QColor &color);
void setItemColor(const QColor &color);
void setFont(const QFont &font);

public slots:
void setMode(Mode mode);
void setItemType(DiagramItem::DiagramType type);
void editorLostFocus(DiagramTextItem *item);

signals:
void itemInserted(DiagramItem *item);
void textInserted(QGraphicsTextItem *item);
void itemSelected(QGraphicsItem *item);

protected:
void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);

void keyReleaseEvent(QKeyEvent *event);
void keyPressEvent(QKeyEvent *event);

private:
bool isItemChange(int type);

DiagramItem::DiagramType myItemType;
QMenu *myItemMenu;
Mode myMode;
bool leftButtonDown;
QPointF startPoint;

QGraphicsLineItem *line;

QFont myFont;
DiagramTextItem *textItem;
QColor myTextColor;
QColor myItemColor;
QColor myLineColor;
};




void DiagramScene::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Control)
{
std::cout << "Ctrl pressed" << endl;
}
}




Any hint on this?


Regards
Sajjad

d_stranz
12th November 2011, 17:40
The QGraphicsScene eats the events before they get to your handler. Try implementing these handlers on the QGraphicsView instead.