You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/iGui/iGuiRibbon/iWxToolBar.h

136 lines
4.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
};