JOriginalMainWnd.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. // *****************************************************************************
  2. // 版权所有(C)2023~2099 上海骄成超声波技术有限公司
  3. // 保留所有权利
  4. // *****************************************************************************
  5. // 作者 : 杨坚
  6. // 版本 : 1.0
  7. // 功能说明:
  8. // 当前类为了执行通用函数
  9. // *****************************************************************************
  10. #ifndef __JORIGINALMAINWND_H__
  11. #define __JORIGINALMAINWND_H__ 1
  12. #include <QMainWindow>
  13. #include <TypeDef.h>
  14. #include <QScrollArea>
  15. #include "CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h"
  16. #include "Src/CameraBind.h"
  17. // 定义函数指针类型
  18. // 函数指针类型
  19. using FunSignaPo = std::function<void(int, JVision::ImageInfo)>;
  20. using FunSignaPoA = void (*)(int, JVision::ImageInfo);
  21. using FunSlotPo = std::function<void()>;
  22. using FunSlotPoA = void (*)();
  23. // 模板函数传递
  24. struct STR_TEMPLATE
  25. {
  26. QScrollArea* pView;
  27. std::vector<FunSlotPo> veSlotFun; // 曹函数
  28. std::vector<FunSignaPo> veSignalFun; // 信号
  29. };
  30. // 当前选择的Group
  31. struct ST_CURRENT_SELECT_GROUP
  32. {
  33. QList<Group*> liGroup; // 当前窗口所有的Group
  34. /**当前选中的
  35. */
  36. Group* pSelectGroup;
  37. /**当前相机ID
  38. */
  39. int nCurrentCameraId;
  40. int nGroupId;
  41. /**当前选中左边,右边大窗口
  42. */
  43. int nSelectLeft1;
  44. bool isBond;
  45. /**绑定次数
  46. */
  47. int nBindNumber;
  48. };
  49. class JOriginalMainWnd: public QMainWindow
  50. {
  51. Q_OBJECT
  52. public:
  53. explicit JOriginalMainWnd(QWidget* parent = nullptr);
  54. ~JOriginalMainWnd();
  55. public:
  56. /**必须绑定它, 没必要一直new ,只是控制
  57. */
  58. virtual void InitMainCameraBind(CameraBind* pCameraBind) = 0;
  59. virtual void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) = 0;
  60. virtual void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) = 0;
  61. virtual void UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData) = 0;
  62. virtual void UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData) = 0;
  63. virtual void UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData) = 0;
  64. /**做绑定释放
  65. */
  66. // virtual void DelBind() = 0;
  67. public: // 通用模板函数
  68. template<class Y>
  69. void InitAllCamerPage(STR_TEMPLATE strFun,Y Fun);
  70. // 创建通用模板
  71. /* template <typename Y, typename T>
  72. using CameraImageHandlera = void (Y::*)(const T&);*/
  73. template <typename Y, typename T>
  74. void SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&));
  75. public:
  76. std::vector<std::unique_ptr<CameraImageHandler>> m_manager;
  77. /**用于管理所有的控制,
  78. */
  79. CameraBind* m_pMainCameraBind = nullptr;
  80. };
  81. template <typename Y, typename T>
  82. void JOriginalMainWnd::SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&))
  83. {
  84. int A = 10;
  85. }
  86. #endif //__JORIGINALMAINWND_H__