Qt Graphics View 绘图架构
"QWGraphicsView.h" 头文件代码如下:
#pragma once
#include <QGraphicsView>
class QWGraphicsView : public QGraphicsView
{
Q_OBJECT
public:
QWGraphicsView(QWidget *parent);
~QWGraphicsView();
protected:
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
signals:
void mouseMovePoint(QPoint point);
void mouseClicked(QPoint point);
};
mouseMoveEvent()是鼠标移动事件,代码如下:
//鼠标移动事件
void QWGraphicsView::mouseMoveEvent(QMouseEvent *event)
{
QPoint point = event->pos();//QGraphicsView的坐标
emit mouseMovePoint(point); //释放信号
QGraphicsView::mouseMoveEvent(event);
}
在此事件响应代码里,通过事件的pos()函数获取鼠标光标在视图中的坐标point,然后作为参数发射 mouseMovePoint(point)信号。这样,若在其他地方编写槽函数与此信号关联,就可以对鼠标移动事件作出响应。
mousePressEvent()是鼠标按键按下事件,代码如下:
//鼠标左键按下事件
void QWGraphicsView::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
QPoint point = event->pos();//QGraphicsView的坐标