/** * @file PaiToolBarView.h * @brief P.A.I 风格工具栏,默认包含一个工具栏,并且不能被删除 * @date 2011-09-16 */ #ifndef PAI_FRAME_WIDGET_PAITOOLBARVIEW_H #define PAI_FRAME_WIDGET_PAITOOLBARVIEW_H #include #include "Turtle.h" class QVBoxLayout; class QToolBar; namespace pai { /** * @class PaiToolBarView * @brief P.A.I 风格工具栏,默认包含一个工具栏,并且不能被删除 */ class PAI_WIDGET_EXPORT PaiToolBarView : public QWidget { public: /** * @enum EToolBarType * @brief 风格 */ enum EToolBarType { NORMAL_TOOLBAR = 40, ///< 普通风格 SMALL_TOOLBAR = 28 ///< 小模式ToolBar }; /** * @brief 构造函数 * @param[in] pParent 父窗口句柄 * @param[in] type 风格类型 */ PaiToolBarView(QWidget *pParent = NULL, EToolBarType type = NORMAL_TOOLBAR); /** * @brief 析构函数 */ virtual ~PaiToolBarView(); /** * @brief 获得视口 * @return 视口 */ QWidget* GetViewport(); /** * @brief 重新设置一个视口,原视口会被清楚,新视口的的parent将会视为这个类的对象 * @param[in] pWidget 视口组件 */ void SetViewport(QWidget *pWidget); /** * @brief 添加一个新的工具栏 * @param[in] pToolBar 工具栏组件 * @param[in] type 风格类型 */ void AddToolBar(QToolBar *pToolBar, EToolBarType type = NORMAL_TOOLBAR); /** * @brief 去掉指定的工具栏 * @param[in] pToolBar 工具栏组件 */ void RemoveToolBar(QToolBar *pToolBar); /** * @brief 获得当前存在的工具栏指针序列 * @return 当前存在的工具栏指针序列 */ QList GetToolBars(); /** * @brief 向指定工具栏添加QAction,如果工具栏未指定,将会被添加到第一个工具栏 * @param[in] pAction action对象 * @param[in] pToolBar 工具栏组件 */ void AddAction(QAction *pAction, QToolBar *pToolBar = NULL); /** * @brief 向指定工具栏添加QWidget,如果工具栏未指定,将会被添加到第一个工具栏 * @param[in] pWidget widget对象 * @param[in] pToolBar 工具栏组件 */ void AddWidget(QWidget *pWidget, QToolBar *pToolBar = NULL); /** * @brief 添加一个ToolButton(这里toolbar有2个固定的值所以可以将toolbutton设置为固定的大小) * @param[in] pToolButton toolbutton对象 * @param[in] pToolBar 工具栏组件 */ void AddToolButton(QWidget *pToolButton, QToolBar *pToolBar = NULL); private: QWidget *m_pToolBarArea; ///< 工具栏区域 QWidget *m_pViewport; ///< 视图 QList m_ToolBars; ///< 工具栏 QVBoxLayout *m_pMainVLayout; ///< 主布局 QVBoxLayout *m_pToolBarLayout; ///< 工具栏布局 }; } #endif ///< PAI_FRAME_WIDGET_PAITOOLBARVIEW_H