123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // *****************************************************************************
- // 版权所有(C)2023~2099 上海骄成超声波技术有限公司
- // 保留所有权利
- // *****************************************************************************
- // 作者 : 杨坚
- // 版本 : 1.0
- // 功能说明:
- // 当前类为了执行通用函数
- // *****************************************************************************
- #ifndef __JORIGINALMAINWND_H__
- #define __JORIGINALMAINWND_H__ 1
- #include <QMainWindow>
- #include <TypeDef.h>
- #include <QScrollArea>
- #include "CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h"
- #include "Src/CameraBind.h"
- // 定义函数指针类型
- // 函数指针类型
- using FunSignaPo = std::function<void(int, JVision::ImageInfo)>;
- using FunSignaPoA = void (*)(int, JVision::ImageInfo);
- using FunSlotPo = std::function<void()>;
- using FunSlotPoA = void (*)();
- // 模板函数传递
- struct STR_TEMPLATE
- {
- QScrollArea* pView;
- std::vector<FunSlotPo> veSlotFun; // 曹函数
- std::vector<FunSignaPo> veSignalFun; // 信号
- };
- // 当前选择的Group
- struct ST_CURRENT_SELECT_GROUP
- {
- /**当前选中的
- */
- Group* pSelectGroup;
- /**当前相机ID
- */
- int nCurrentCameraId;
- int nGroupId;
- /**当前选中左边,右边大窗口
- */
- int nSelectLeft1;
- bool isBond;
- /**绑定次数
- */
- int nBindNumber;
- };
- class JOriginalMainWnd: public QMainWindow
- {
- Q_OBJECT
- public:
- explicit JOriginalMainWnd(QWidget* parent = nullptr);
- ~JOriginalMainWnd();
- public: //--- 这里任何逻辑都不要动,先等完善在精简
- /**必须绑定它, 没必要一直new ,只是控制
- */
- virtual void InitMainCameraBind(CameraBind* pCameraBind) = 0;
- /**窗口切换或者销毁必须解绑
- */
- virtual void UnCameraBind() = 0;
- /**绑定相机画面
- */
- virtual void CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind = false) = 0;
- virtual void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) = 0;
- virtual void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) = 0;
- virtual void UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData) = 0;
- virtual void UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData) = 0;
- virtual void UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData) = 0;
- /**做绑定释放
- */
- // virtual void DelBind() = 0;
- public: // 通用模板函数
- template<class Y>
- void CameraConnectUpdateImageFunA(Y calssFun,int nIndex, Group* widget, bool isUnCameraBind = false);
- template<class Y>
- void InitAllCamerPage(STR_TEMPLATE strFun,Y Fun);
- // 创建通用模板
- /* template <typename Y, typename T>
- using CameraImageHandlera = void (Y::*)(const T&);*/
- template <typename Y, typename T>
- void SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&));
- public:
- std::vector<std::unique_ptr<CameraImageHandler>> m_manager;
- /**用于管理所有的控制,
- */
- CameraBind* m_pMainCameraBind = nullptr;
- };
- template<class Y>
- void JOriginalMainWnd::CameraConnectUpdateImageFunA(Y calssFun, int nIndex, Group* widget, bool isUnCameraBind /*= false*/)
- {
- auto BinCamerasImage = [&](void (calssFun::* pCamerasImage)(const QPixmap& imageData))
- {
- if (isUnCameraBind)
- {
- //disconnect(widget, &Group::SetCurrentSelectSig, this, &ChartsAndCamerasWnd::GetCurrentSelectSlots);
- disconnect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
- }
- else
- {
- //共用函数
- connect(widget, &Group::sendUpdateGroupState, this, &SingleCameraOperationWnd::checkSettings);
- connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
- }
- };
- if (nIndex == 0)
- {
- BinCamerasImage(&calssFun::UpDataImageShowSignals0);
- }
- else if (nIndex == 1)
- {
- BinCamerasImage(&calssFun::UpDataImageShowSignals1);
- }
- else if (nIndex == 2)
- {
- BinCamerasImage(&calssFun::UpDataImageShowSignals2);
- }
- else if (nIndex == 3)
- {
- BinCamerasImage(&calssFun::UpDataImageShowSignals3);
- }
- else if (nIndex == 4)
- {
- BinCamerasImage(&calssFun::UpDataImageShowSignals4);
- }
- }
- template <typename Y, typename T>
- void JOriginalMainWnd::SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&))
- {
- int A = 10;
- }
- #endif //__JORIGINALMAINWND_H__
|