近期在学习OSGEarth,看example,自己结合Qt写了一些小例子,特此记录一下。
首先,考虑到OE(OSGEarth)嵌入到QGraphicsView中,首先收到按键、鼠标事件的就是QGraphicsView,因此,我们需要先把这一庞大的事件进行处理。
代码如下:eventadapter .h
class EventAdapter : public QGraphicsView
{
public:
EventAdapter();
~EventAdapter();
protected:
// 处理按键事件
virtual void keyPressEvent(QKeyEvent* event);
virtual void keyReleaseEvent(QKeyEvent* event);
// 处理鼠标单击事件
virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
// 处理鼠标双击事件
virtual void mouseDoubleClickEvent(QMouseEvent* event);
virtual void mouseMoveEvent(QMouseEvent* event);
// 处理鼠标中轮滑动事件
virtual void wheelEvent(QWheelEvent* event);
// 处理窗口大小改变事件
virtual void resizeEvent(QResizeEvent *event);
// 处理鼠标移动事件
virtual void moveEvent(QMoveEvent* event);
// timerEvent事件
virtual void timerEvent(QTimerEvent *event);
private:
void setKeyboardModifiers(QInputEvent* event