SARibbon 2.2.3
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonCustomizeWidget类 参考

自定义界面窗口 更多...

#include <SARibbonCustomizeWidget.h>

类 SARibbonCustomizeWidget 继承关系图:

class  PrivateData
 管理SARibbonCustomizeWidget的业务逻辑 更多...
 

Public 类型

enum  RibbonTreeShowType { ShowAllCategory , ShowMainCategory }
 定义ribbon树的显示类型 更多...
 
enum  ItemRole {
  LevelRole = Qt::UserRole + 1 , PointerRole = Qt::UserRole + 2 , CanCustomizeRole = Qt::UserRole + 3 , CustomizeRole = Qt::UserRole + 4 ,
  CustomizeObjNameRole = Qt::UserRole + 5
}
 QStandardItem对应的role 更多...
 

Public 成员函数

 SARibbonCustomizeWidget (SARibbonMainWindow *ribbonWindow, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
 SARibbonCustomizeWidget::SARibbonCustomizeWidget
 
 SARibbonCustomizeWidget (SARibbonBar *ribbonbar, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
 
void setupActionsManager (SARibbonActionsManager *mgr)
 设置action管理器
 
bool isApplied () const
 //判断用户是否有要存储的内容,对应save动作
 
bool isCached () const
 判断用户是否有改动内容,对应apply动作
 
const QStandardItemModel * model () const
 获取model
 
void updateModel ()
 根据当前的radiobutton选项来更新model
 
void updateModel (RibbonTreeShowType type)
 更新model
 
bool applys ()
 应用所有设定
 
bool toXml (QXmlStreamWriter *xml) const
 转换为xml
 
bool toXml (const QString &xmlpath) const
 把配置写入文件中
 
void fromXml (QXmlStreamReader *xml)
 从xml中加载QList<SARibbonCustomizeData>
 
void fromXml (const QString &xmlpath)
 从xml中加载QList<SARibbonCustomizeData>
 
void makeActionsApplied ()
 清除已应用的动作
 
void clearApplied ()
 清除applied的动作,cancel操作后需要清空已应用的动作
 
void clearCache ()
 清除缓存动作
 
void clear ()
 清除所有动作,不包含本地读取的数据
 

静态 Public 成员函数

static bool fromXml (QXmlStreamReader *xml, SARibbonBar *bar, SARibbonActionsManager *mgr)
 应用xml配置
 

Protected 成员函数

void simplify ()
 精简
 
SARibbonPannelItem::RowProportion selectedRowProportion () const
 获取当前界面选中的行属性
 
QAction * selectedAction () const
 获取listview中选中的action
 
QAction * itemToAction (QStandardItem *item) const
 把item转换为action
 
QStandardItem * selectedItem () const
 获取ribbon tree选中的item
 
int selectedRibbonLevel () const
 获取选中的ribbon tree 的level
 
int itemLevel (QStandardItem *item) const
 获取StandardItem 的level
 
void setSelectItem (QStandardItem *item, bool ensureVisible=true)
 设置某个item被选中
 
bool isItemCanCustomize (QStandardItem *item) const
 判断itemn能否改动,可以改动返回true
 
bool isSelectedItemCanCustomize () const
 
bool isCustomizeItem (QStandardItem *item) const
 判断itemn能否改动,可以改动返回true
 
bool isSelectedItemIsCustomize () const
 
void removeItem (QStandardItem *item)
 

详细描述

自定义界面窗口

注解
SARibbon的自定义是基于步骤的,如果在窗口生成前调用了sa_apply_customize_from_xml_file 类似函数 那么在对话框生成前为了保证同步需要调用SARibbonCustomizeWidget::fromXml 同步配置文件,这样再次修改后的配置文件就一致

成员枚举类型说明

◆ ItemRole

QStandardItem对应的role

枚举值
LevelRole 

代表这是层级,有0:category 1:pannel 2:item

PointerRole 

代表这是存放指针。根据LevelRole来进行转

CanCustomizeRole 

代表个item是可以自定义的.bool

CustomizeRole 

代表这个是自定义的item,bool,主要用于那些自己添加的标签和pannel,有此角色必有CanCustomizeRole

CustomizeObjNameRole 

记录了临时的自定义内容的obj名 QString

◆ RibbonTreeShowType

定义ribbon树的显示类型

枚举值
ShowAllCategory 

显示所有Category,包括contextcategory

ShowMainCategory 

显示主要的category,不包含上下文

构造及析构函数说明

◆ SARibbonCustomizeWidget()

SARibbonCustomizeWidget::SARibbonCustomizeWidget ( SARibbonMainWindow * ribbonWindow,
QWidget * parent = nullptr,
Qt::WindowFlags f = Qt::WindowFlags() )

SARibbonCustomizeWidget::SARibbonCustomizeWidget

参数
ribbonWindow传入需要管理的SARibbonMainWindow指针
parent用于界面生成的parent,可以和SARibbonMainWindow一样
f同QWidget::QWidget的第二个参数

成员函数说明

◆ applys()

bool SARibbonCustomizeWidget::applys ( )

应用所有设定

返回
应用成功返回true
注解
所有设定有一个应用成功都会返回true

◆ clearCache()

void SARibbonCustomizeWidget::clearCache ( )

清除缓存动作

在执行applys函数后,如果要继续调用,应该clear,否则会导致异常

◆ fromXml() [1/3]

void SARibbonCustomizeWidget::fromXml ( const QString & xmlpath)

从xml中加载QList<SARibbonCustomizeData>

对于基于配置文件的设置,对话框显示前建议调用此函数,保证叠加设置的正确记录

参数
xmlpath
注解
此函数要在setupActionsManager 函数之后调用
如果程序启动后加载了自定义配置,再调用此窗口时需要调用此函数,把原来的配置加载进来, 在生成新动作时会把旧动作保存,但在调用applys时不会调用此加载的动作

◆ fromXml() [2/3]

void SARibbonCustomizeWidget::fromXml ( QXmlStreamReader * xml)

从xml中加载QList<SARibbonCustomizeData>

对于基于配置文件的设置,对话框显示前建议调用此函数,保证叠加设置的正确记录

参数
xml
返回
注解
此函数要在setupActionsManager 函数之后调用

◆ fromXml() [3/3]

bool SARibbonCustomizeWidget::fromXml ( QXmlStreamReader * xml,
SARibbonBar * bar,
SARibbonActionsManager * mgr )
static

应用xml配置

注解
重复加载一个配置文件会发生异常,为了避免此类事件发生,一般通过一个变量保证只加载一次,如:
//只能调用一次
static bool has_call = false;
if (!has_call) {
QFile f("customize.xml");
if (!f.open(QIODevice::ReadWrite|QIODevice::Text)) {
return;
}
f.seek(0);
QXmlStreamReader xml(&f);
has_call = SARibbonCustomizeWidget::fromXml(&xml, this, m_actMgr);
}
void fromXml(QXmlStreamReader *xml)
从xml中加载QList<SARibbonCustomizeData>
Definition SARibbonCustomizeWidget.cpp:892
参数
xml
barSARibbonBar
返回
所有设定有一个应用成功都会返回true
参见
sa_customize_datas_from_xml sa_customize_datas_apply sa_apply_customize_from_xml_file

◆ isApplied()

bool SARibbonCustomizeWidget::isApplied ( ) const

//判断用户是否有要存储的内容,对应save动作

返回

◆ isCached()

bool SARibbonCustomizeWidget::isCached ( ) const

判断用户是否有改动内容,对应apply动作

返回

◆ isCustomizeItem()

bool SARibbonCustomizeWidget::isCustomizeItem ( QStandardItem * item) const
protected

判断itemn能否改动,可以改动返回true

参数
item
返回

◆ isItemCanCustomize()

bool SARibbonCustomizeWidget::isItemCanCustomize ( QStandardItem * item) const
protected

判断itemn能否改动,可以改动返回true

参数
item
返回

◆ itemLevel()

int SARibbonCustomizeWidget::itemLevel ( QStandardItem * item) const
protected

获取StandardItem 的level

参数
item
返回

◆ itemToAction()

QAction * SARibbonCustomizeWidget::itemToAction ( QStandardItem * item) const
protected

把item转换为action

参数
item
返回
如果没有action可转换,返回nullptr

◆ model()

const QStandardItemModel * SARibbonCustomizeWidget::model ( ) const

获取model

返回

◆ selectedAction()

QAction * SARibbonCustomizeWidget::selectedAction ( ) const
protected

获取listview中选中的action

返回
如果没有选中action,返回nullptr
注解
如果要获取treeview选中的action,使用itemToAction 函数

◆ selectedItem()

QStandardItem * SARibbonCustomizeWidget::selectedItem ( ) const
protected

获取ribbon tree选中的item

返回

◆ selectedRibbonLevel()

int SARibbonCustomizeWidget::selectedRibbonLevel ( ) const
protected

获取选中的ribbon tree 的level

返回
-1为选中异常,0代表选中了category 1代表选中了pannel 2代表选中了action

◆ selectedRowProportion()

SARibbonPannelItem::RowProportion SARibbonCustomizeWidget::selectedRowProportion ( ) const
protected

获取当前界面选中的行属性

返回

◆ setSelectItem()

void SARibbonCustomizeWidget::setSelectItem ( QStandardItem * item,
bool ensureVisible = true )
protected

设置某个item被选中

参数
item

◆ setupActionsManager()

void SARibbonCustomizeWidget::setupActionsManager ( SARibbonActionsManager * mgr)

设置action管理器

参数
mgr

◆ toXml() [1/2]

bool SARibbonCustomizeWidget::toXml ( const QString & xmlpath) const

把配置写入文件中

参数
xmlpath
返回

◆ toXml() [2/2]

bool SARibbonCustomizeWidget::toXml ( QXmlStreamWriter * xml) const

转换为xml

此函数仅会写element,不会写document相关内容,因此如果需要写document, 需要在此函数前调用QXmlStreamWriter::writeStartDocument(),在此函数后调用QXmlStreamWriter::writeEndDocument()

注解
注意,在传入QXmlStreamWriter之前,需要设置编码为utf-8:xml->setCodec("utf-8");
由于QXmlStreamWriter在QString作为io时,是不支持编码的,而此又无法保证自定义过程不出现中文字符, 因此,QXmlStreamWriter不应该通过QString进行构造,如果需要用到string,也需要通过QByteArray构造,如:
SARibbonCustomizeDialog dlg(this);//this为SARibbonMainWindow的窗口
dlg.setupActionsManager(m_actMgr);
if (SARibbonCustomizeDialog::Accepted == dlg.exec()) {
dlg.applys();
QByteArray str;
QXmlStreamWriter xml(&str);//QXmlStreamWriter不建议通过QString构造,遇到中文会异常
xml.setAutoFormatting(true);
xml.setAutoFormattingIndent(2);
xml.setCodec("utf-8");//在writeStartDocument之前指定编码
xml.writeStartDocument();
bool isok = dlg.toXml(&xml);
xml.writeEndDocument();
if (isok) {
QFile f("customize.xml");
if (f.open(QIODevice::ReadWrite|QIODevice::Text|QIODevice::Truncate)) {
QTextStream s(&f);
s.setCodec("utf-8");//指定编码输出
s << str;
s.flush();
}
m_edit->append("write xml:");//m_edit的定义为:QTextEdit *m_edit;
m_edit->append(str);
}
}
SARibbonCustomizeWidget的对话框封装
Definition SARibbonCustomizeDialog.h:21
返回
如果出现异常,返回false,如果没有自定义数据也会返回false
参见
sa_customize_datas_to_xml

该类的文档由以下文件生成: