// ***************************************************************************** // ��Ȩ���У�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; bool isInitialed; }; 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__