/** * @file PaiMenuToolBar.h * @brief 菜单栏组件 * @date 2011-08-23 */ #ifndef PAI_FRAME_WIDGET_PAIMENUTOOLBAR_H #define PAI_FRAME_WIDGET_PAIMENUTOOLBAR_H #include #include "PaiToolBar.h" #include "Turtle.h" namespace pai { namespace gui { class MenuToolButton; } } namespace pai { namespace gui { /** * @class PaiMenuToolBar * @brief P.A.I系统的插件的内容区通常有一个带菜单的工具栏,这个类定制了这种工具栏 */ class PAI_WIDGET_EXPORT PaiMenuToolBar:public pai::gui::PaiToolBar { Q_OBJECT public: /** * @brief 构造函数 * @param[in] title 标题 * @param[in] pParent 父窗口句柄 */ PaiMenuToolBar(const QString & title,QWidget *pParent); /** * @brief 析构函数 */ virtual ~PaiMenuToolBar(); /** * @brief 得到菜单句柄 * @return 菜单 */ QMenu* GetMenu() const; /** * @brief 得到视图菜单句柄 * @return 视图菜单句柄 */ QMenu* GetViewsMenu() const; /** * @brief 设置工具栏按钮可见性 * @param[in] flag 工具栏按钮是否可见 */ void setMenuButtonVisible(bool flag); /** * @brief 向视图菜单中添加菜单项 * @param[in] name 区域名 * @param[in] viewID 菜单对应视图ID */ void AddViewsMenuAction(QString & name, std::string viewID); /** * @brief 设置菜单选中状态 * @param[in] viewID 菜单对应视图ID * @param[in] checked 菜单选中状态 */ void SetViewMenuChecked(const QString & viewID, bool checked); /** * @brief 清空Menu列表内容 * @param[in] isVisible 是否显示Menu控件 */ void Clear(bool isVisible); public slots: /** * @brief 关闭TabWidget * @param[in] extensionID 关闭的ID */ void CloseTabWidget(const QString & extensionID); protected: /** * @brief 绘制事件 * @param[in] pEvent 绘制事件 */ virtual void paintEvent(QPaintEvent *pEvent); private: QMenu *m_pRootMenu; ///< 根菜单 QMenu *m_pViewsMenu; ///< 视图菜单栏 MenuToolButton *m_pMenuButton; ///< 菜单按钮 QAction *m_pMenuButtonAct;///< 菜单Action }; } } #endif ///< PAI_FRAME_WIDGET_PAIMENUTOOLBAR_H