Files
2026-05-24 23:21:33 +02:00

160 lines
4.4 KiB
C++

/************************************************************************
* 版权所有 (C) 梁振 Email: liang1057@163.com.cn
*
* 文件名称: QsMainWindow.h
* 内容摘要:
* 其它说明: 无
* 当前版本: 0.1
* 作 者: Leon
* 完成日期: [2020/06/16]
*
* 修改记录1:暂无
* 修改日期:
* 版 本 号:
* 修 改 人:
* 修改内容:
* 修改记录2:…
************************************************************************/
#ifndef QSMAINWINDOW_H
#define QSMAINWINDOW_H
#include <QTabWidget>
#include <QMainWindow>
#include <QDragMoveEvent>
#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<type*>(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