/************************************************************************ * 版权所有 (C) 梁振 Email: liang1057@163.com.cn * * 文件名称: QsMainWindow.h * 内容摘要: * 其它说明: 无 * 当前版本: 0.1 * 作 者: Leon * 完成日期: [2020/06/16] * * 修改记录1:暂无 * 修改日期: * 版 本 号: * 修 改 人: * 修改内容: * 修改记录2:… ************************************************************************/ #ifndef QSMAINWINDOW_H #define QSMAINWINDOW_H #include #include #include #include "SgfParamManager.h" #include "QsfTitleBar.h" /************************************************************************ 类声明: 工作窗口 ************************************************************************/ /** @brief 工作窗口. * * @details 工作窗口的主体是Tab窗口. */ class QsfWorkWindow : public QMainWindow { Q_OBJECT public: /** @brief 构造函数. * * @details 构造函数. * @param parent 父指针. * @param flags flags. */ #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) QsfWorkWindow(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags()); #else QsfWorkWindow(QWidget *parent = 0, Qt::WFlags flags = 0); #endif /** @brief 析构函数. * * @details 析构函数,为了防止资源泄漏所以为virtual函数. */ virtual ~QsfWorkWindow(); public: /** @brief 获取当前tab页Widget函数. * * @details 获取当前tab页Widget函数. * @return 当前Widget指针. */ QWidget* getCurrentTabWidget(); /** @brief 获取当前tab页SgfWidget函数. * * @details 获取当前tab页SgfWidget函数. * @return 当前SgfWidget指针. */ QWidget * currentTabWidget(); /** @brief 获取tabWidget函数. * * @details 获取tabWidget函数. * @return SgfTabWidget指针. */ QTabWidget* workSpace(); private: QTabWidget* m_workspace; }; /************************************************************************ 类声明: ************************************************************************/ /** @brief * * @details */ /** 默认 布局文件名称 */ const QString MAINWINDOWLAYOUTFILE = "sw_mainframe.layout"; /** @brief 应用程序主窗口对象 * * @details 定义一个应用程序主窗口的宏对象,可在插件中访问主窗口资源.这是一个指针 */ #define QSF_MainWindow ((QsfMainWindow*)(COREOBJECT(QsfMainWindow))) #define QSF_MainWindow_GetParam(type, name) static_cast(GET_COREOBJECT(SgfParamManager)->getParamValue( string(name))) #define QSF_MainWindow_GetParam(type, name) ((type*)(GET_COREOBJECT(SgfParamManager)->getParamValue( string(name)))) /************************************************************************** * 类声明 * **************************************************************************/ /** @brief 应用程序主窗口类. * * @details 平台应用程序框架服务-应用程序主窗口类 */ class QsfMainWindow : public QWidget //, public SgfParamManager { Q_OBJECT public: QsfMainWindow(); ~QsfMainWindow(); static void createMainWindow(); QsfTitleBar* titleBar(){ return m_titleBar; } QsfWorkWindow* workWindow(){ return m_workWindow; } QTabWidget* tabMenuWidget(){ return m_tableMenu; } /** @brief 创建DockWidget. */ QDockWidget* createDockWidget(QString title, QString name, Qt::DockWidgetArea area); /** @brief 添加DockWidget. */ void addDockWidget(QDockWidget* tDock, QString title, Qt::DockWidgetArea area); /** @brief 创建工作页Widget. */ QWidget* createWorkWidget(QString title, QString name); /** @brief 添加工作页Widget. */ void addWorkWidget(QWidget* workTab, QString title); private: QsfWorkWindow* m_workWindow; QsfTitleBar* m_titleBar; QTabWidget* m_tableMenu; protected: /** @brief 标题范围. */ QRect m_titleRect; /** @brief 鼠标上一次的位置. */ QPoint oldMousePos; /** @brief 鼠标单击. */ void mousePressEvent(QMouseEvent *event); /** @brief 鼠标双击. */ void mouseDoubleClickEvent ( QMouseEvent * event); /** @brief 鼠标拖动. */ void mouseMoveEvent(QMouseEvent *event); }; #endif // QsfMainWindow_H