#ifndef GRAPHWINDOW_H #define GRAPHWINDOW_H #include #include #include #include #include #include #include namespace Ui { class GraphWindow; } class GraphWindow : public QDialog { Q_OBJECT public: explicit GraphWindow(QWidget *parent = nullptr); ~GraphWindow(); void setVarList(QList *list); void setChosenIndex(int varIndex); void paintGraph(QWidget *canvas); bool eventFilter(QObject *watched, QEvent *event); void wheelEvent(QWheelEvent *event); void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); private slots: void onTrig(); void on_btn_help_clicked(); private: static const int VERT_DIV=6; //纵向划分的格数 static const int HORI_DIV=10; //横向划分的格数 Ui::GraphWindow *ui; QList *varList; //变量列表指针,需外部设置 QTimer *trigTimer; //定时器用于触发图像更新 bool ctrlFlag=false,shiftFlag=false,altFlag=false; //组合键按下标志 bool looking=false; //当前是否正在查看变量 bool dragging=false; //当前是否正在拖动画布 QPoint mousePos,lastMousePos; //拖拽时的鼠标坐标 int chosenVarIndex=-1; //当前选中的变量在列表中的索引(未选中时-1) void updateCursor(); }; #endif // GRAPHWINDOW_H