|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iDlgBaseEx.h"
|
|
|
|
|
|
#include "iRibbonXmlTab.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "iGuiRibbon_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
///ZXF202605 按钮面板Group管理类
|
|
|
|
|
|
class iWxGroupBar;
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief Ribbon简化,仅仅ToolBar模式
|
|
|
|
|
|
class I_GUI_RIBBON_EXPORT iWxToolBar : public iDlgBaseEx
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit iWxToolBar(QString sXmlName = "", \
|
|
|
|
|
|
QWidget *parent = 0);
|
|
|
|
|
|
~iWxToolBar();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
|
|
|
|
|
|
// 返回部分指针变量
|
|
|
|
|
|
vecRibbonTabPtr* getRibbonStruts();
|
|
|
|
|
|
QVector<QWidget*>* getSubCtrls();
|
|
|
|
|
|
|
|
|
|
|
|
// 根据辅助信息返回cmd
|
|
|
|
|
|
iRibbonXmlCmd* getCmdByExtInfo(QString sExtInfo);
|
|
|
|
|
|
|
|
|
|
|
|
// 根据ID返回cmd
|
|
|
|
|
|
iRibbonXmlCmd* getCmdByID(QString sID);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 定义
|
|
|
|
|
|
void loadXmlStructs();
|
|
|
|
|
|
|
|
|
|
|
|
// 切换正常模式和简缩模式
|
|
|
|
|
|
virtual void swapTabMode(); //
|
|
|
|
|
|
|
|
|
|
|
|
// 各种类型
|
|
|
|
|
|
QWidget* createTabBy(iRibbonXmlTab* pTab);
|
|
|
|
|
|
QWidget* createGroupBy(iRibbonXmlGroup* pGroup);
|
|
|
|
|
|
// QWidget* createCmdBy(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_Btn(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_Combo(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_Check(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_Radio(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_Text(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_Label(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
// QWidget* createCmdBy_ListWx(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
|
|
|
|
|
|
// //新增加边界框
|
|
|
|
|
|
// QWidget* createCmdBy_LineEdit(iRibbonXmlCmd* pCmd);
|
|
|
|
|
|
|
|
|
|
|
|
// virtual bool dealwithCmdSubBy(iRibbonXmlCmd* pCmd, QToolButton*& pBtn);
|
|
|
|
|
|
|
|
|
|
|
|
///ZXF202605
|
|
|
|
|
|
virtual void resizeEvent(QResizeEvent* event);
|
|
|
|
|
|
///ZXF202605
|
|
|
|
|
|
// 自动折叠:把指定的 group 列表按可用宽度从右往左折叠
|
|
|
|
|
|
// 由子类(iWxRibbon)按 tab 调用,每个 tab 一组
|
|
|
|
|
|
void layoutGroupsIn(const QList<class iWxGroupBar*>& vecBars, int avail);
|
|
|
|
|
|
//private slots:
|
|
|
|
|
|
|
|
|
|
|
|
// void slotBtnClicked(); //Btn
|
|
|
|
|
|
// void slotListCtrlIndexChanged(int); //Combox ListWx
|
|
|
|
|
|
// void slotCheckCtrlClicked(bool); //CheckBox, RadioBox
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
/// @title Ribbon信号触发
|
|
|
|
|
|
/// @param pCtrl触发的子控件
|
|
|
|
|
|
/// @param pInfo关联的Ribbon配置信息(来自xml)
|
|
|
|
|
|
void sigRibbonActioned(QWidget* pCtrl,
|
|
|
|
|
|
iRibbonXmlCmd* pInfo,
|
|
|
|
|
|
QVariant o);
|
|
|
|
|
|
|
|
|
|
|
|
/// @title Ribbon信号触发
|
|
|
|
|
|
/// @param pCtrl触发的子控件
|
|
|
|
|
|
/// @param pInfo关联的Ribbon配置信息(来自xml)
|
|
|
|
|
|
/// @param listValues显示部分
|
|
|
|
|
|
/// @param listIDs
|
|
|
|
|
|
void sigRibbonGetListValues(QWidget* pCtrl,
|
|
|
|
|
|
iRibbonXmlCmd* pInfo,
|
|
|
|
|
|
QStringList& listValues,
|
|
|
|
|
|
QStringList& listIDs,
|
|
|
|
|
|
int& nCurSel);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// @title Ribbon信号触发(允许外界对SplitBtton进行调整)
|
|
|
|
|
|
/// @param pCtrl触发的子控件
|
|
|
|
|
|
/// @param pInfo关联的Ribbon配置信息(来自xml)
|
|
|
|
|
|
/// @param listNames 英文Name
|
|
|
|
|
|
/// @param listTexts 中文
|
|
|
|
|
|
/// @param listIcons 图标
|
|
|
|
|
|
/// @param bChanged 是否改变
|
|
|
|
|
|
void sigRibbonAdjustSplitBtns(QWidget* pCtrl,
|
|
|
|
|
|
iRibbonXmlCmd* pInfo,
|
|
|
|
|
|
QStringList& listNames,
|
|
|
|
|
|
QStringList& listTexts,
|
|
|
|
|
|
QStringList& listIcons,
|
|
|
|
|
|
bool& bChanged);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void sigRibbonListWxCurChanged(QWidget* pCtrl,
|
|
|
|
|
|
iRibbonXmlCmd* pInfo,
|
|
|
|
|
|
int nCurSel);
|
|
|
|
|
|
void sigRibbonCheckWxClicked(QWidget* pCtrl,
|
|
|
|
|
|
iRibbonXmlCmd* pInfo,
|
|
|
|
|
|
bool bSelect);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
QString m_sXmlName; //可以外部设定,只是文件名,不带xml后缀
|
|
|
|
|
|
|
|
|
|
|
|
// 配置化结构体
|
|
|
|
|
|
vecRibbonTabPtr m_vecTabXmls;
|
|
|
|
|
|
|
|
|
|
|
|
// 所有的控件
|
|
|
|
|
|
QVector<QAction*> m_vecMenuActions;
|
|
|
|
|
|
// 所有的控件
|
|
|
|
|
|
QVector<QWidget*> m_vecSubCtrls;
|
|
|
|
|
|
|
|
|
|
|
|
///ZXF202605
|
|
|
|
|
|
bool m_bRelayouting;
|
|
|
|
|
|
///ZXF202605
|
|
|
|
|
|
// 当前正在构建的 tab 的 GroupBar 顺序收集器;
|
|
|
|
|
|
// createTabBy() 开头清空,每 createGroupBy() 成功一次追加一项;
|
|
|
|
|
|
// createTabBy() 结束后由调用方(iWxRibbon)按 tab page 取走存档
|
|
|
|
|
|
QList<iWxGroupBar*> m_vecGroupBars;
|
|
|
|
|
|
};
|