#ifndef REALTIMEFORM_H #define REALTIMEFORM_H #include #include #include #include #include #include #include #include #include #include #include "sqlitedb.h" #include //定时器类 #include #include class NetMgr; namespace Ui { class CRealTimeForm; } // 1 创建新的类 MyItem2 继承 QGraphicsPathItem,重新实现点击、悬浮等函数 #include #include // 点击该控件时,调用该函数 typedef void (*ClickHandle)(int type,void *other); class MyItem2 : public QGraphicsPathItem { public: explicit MyItem2(QGraphicsItem *parent = nullptr); protected: // 重新实现这些函数 void keyPressEvent(QKeyEvent *event); void mousePressEvent(QGraphicsSceneMouseEvent *event); void hoverEnterEvent(QGraphicsSceneHoverEvent *event); void hoverLeaveEvent (QGraphicsSceneHoverEvent * event); void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); public: void setID(int ID); void setClicKHandle(ClickHandle click,void * other); QPainterPath path; private: int ID; ClickHandle click; void * other; QPen pen; }; class CRealTimeForm : public QWidget //, public MyItem2 { Q_OBJECT public: explicit CRealTimeForm(QWidget *parent = nullptr); ~CRealTimeForm(); private slots: void on_graphView_customContextMenuRequested(const QPoint &pos); void onTaskBoxContextMenuEvent(); void slotDoubleClick(QGraphicsSceneMouseEvent *event); void on_addchannel(channelBaseInfo channelbaseInfo,QString str); //网络请求数据响应 void slotNetMgr(QString sAddr,const QVariant& msg); public slots: // 接受服务器的数据槽函数 void slotRecieve(); void disConnect(); // 连接状态变化的时候触发 //void slotStateChanged(QAbstractSocket::SocketState state); signals: void sigWCStatus(QString&); void sigDOStatus(QJsonArray&,QJsonArray&); void sigRPM(QString&); protected: void keyPressEvent(QKeyEvent *event); void mouseDoubleClickEvent(QMouseEvent* e); //void mousePressEvent(QGraphicsSceneMouseEvent *event); private: Ui::CRealTimeForm *ui; QGraphicsScene* m_pGraphicsScene ; QGraphicsScene* m_pGraphicsScene_2 ; QAction *pActionVerticalLine ; QAction *pActionHorizontalLine ; QAction *pActionRect ; QAction *pActionPixmap ; QAction *pActionText ; QAction *pActionRect2 ; QAction *pActionEdit ; QAction *pActionSave ; int id1; //定时器1的唯一标示 int m_RealtimeLog; int m_MachineStatus;//1 运行 0 停机 QByteArray m_arrayReady; QMap> mapGrapics; void InitChannelInfo(); void SetCurDrawType(QString strType); void SetEdit(); void LoadGraphicsConfig(int type);//0 正常,1 编辑 2 停机 void SaveGraphicsConfig(); void UpdateCharacteristic(QVector<_Charateristic>& m_vecCharateristic); void ParseCharacteristic(QJsonArray& arrayValue); QTcpSocket *m_pSocket; // 客户端Socket对象 QString m_strServerIp; // 服务端IP QList m_strReciveList; // 接受回来的数据放到链表里面 bool m_bConnected; // 连接的标志 int m_nConnectWaitTimes; // 连接的等待时间 int m_nServerPort; // 服务端端口号 int m_EditMode; NetMgr *m_pNetMgr; //HTTP消息类对象 QVector<_Charateristic> m_vecCharateristic; //重写定时器的事件 虚函数 子类重写父类的虚函数 virtual void timerEvent(QTimerEvent *); }; #endif // REALTIMEFORM_H