JOriginalMainWnd.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. /**当前选中的
  34. */
  35. Group* pSelectGroup;
  36. /**当前相机ID
  37. */
  38. int nCurrentCameraId;
  39. int nGroupId;
  40. /**当前选中左边,右边大窗口
  41. */
  42. int nSelectLeft1;
  43. bool isBond;
  44. /**绑定次数
  45. */
  46. int nBindNumber;
  47. };
  48. class JOriginalMainWnd: public QMainWindow
  49. {
  50. Q_OBJECT
  51. public:
  52. explicit JOriginalMainWnd(QWidget* parent = nullptr);
  53. ~JOriginalMainWnd();
  54. public:
  55. /**必须绑定它, 没必要一直new ,只是控制
  56. */
  57. virtual void InitMainCameraBind(CameraBind* pCameraBind) = 0;
  58. virtual void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) = 0;
  59. virtual void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) = 0;
  60. virtual void UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData) = 0;
  61. virtual void UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData) = 0;
  62. virtual void UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData) = 0;
  63. /**做绑定释放
  64. */
  65. // virtual void DelBind() = 0;
  66. public: // 通用模板函数
  67. template<class Y>
  68. void InitAllCamerPage(STR_TEMPLATE strFun,Y Fun);
  69. // 创建通用模板
  70. /* template <typename Y, typename T>
  71. using CameraImageHandlera = void (Y::*)(const T&);*/
  72. template <typename Y, typename T>
  73. void SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&));
  74. public:
  75. std::vector<std::unique_ptr<CameraImageHandler>> m_manager;
  76. /**用于管理所有的控制,
  77. */
  78. CameraBind* m_pMainCameraBind = nullptr;
  79. };
  80. template <typename Y, typename T>
  81. void JOriginalMainWnd::SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&))
  82. {
  83. int A = 10;
  84. }
  85. #endif //__JORIGINALMAINWND_H__