打开
OPENFILE
Y
60,60
打开文件(Ctrl+O)
toolbutton
新建
NEWFILE
Y
60,60
新建文件(Ctrl+N)
toolbutton
保存
SAVEFILE
Y
60,60
保存文件(Ctrl+S)
toolbutton
另存
SAVEASFILE
Y
60,60
另存文件(Ctrl+Shift+S)
toolbutton
撤销
UNDO
Y
60,60
撤销(Ctrl+Z)
toolbutton
恢复
REDO
Y
60,60
恢复(Ctrl+Y)
toolbutton
//定义数据结构
struct buttonInfo
{//对应图片按钮
QString name;
QString cmd;
bool visible;
QString tips;
};
struct groupInfo
{//对应图片中 文件编辑/操作/导入 组
QString groupName;
QList btnVec;
};
QMap > m_map; //key:widget名字 //value: 组信息
//接口
void parse_xml(const QString& filePath, QMap >& mapData)
{
QFile file(filePath);
if (!file.open(QFile::ReadOnly | QFile::Text))
{
return ;
}
QXmlStreamReader reader(&file);
while (!reader.atEnd() && !reader.hasError())
{//widget
if (reader.isStartElement() && reader.name() == "widget")
{
QString widgetName;
auto attributes = reader.attributes();
if (attributes.isEmpty())
widgetName = "NA";
else
widgetName = attributes.value("name").toString();
QList _groupList;
while (!reader.hasError())
{//group
if (reader.isEndElement() && reader.name() == "widget")
break;
if (reader.isStartElement() && reader.name() == "group")
{
groupInfo _groupObj;
QString groupName;
auto attributes = reader.attributes();
if (attributes.isEmpty())
groupName = "NA";
else
groupName = attributes.value("name").toString();
_groupObj.groupName = groupName;
while (!reader.hasError())
{//toolbutton
if (reader.isEndElement() && reader.name() == "group")
break;
if(reader.isStartElement() && reader.name() == "qobject")
{
buttonInfo btnObj;
while (!reader.hasError())
{
if (reader.isEndElement() && reader.name() == "qobject")
break;
if (reader.isStartElement() && reader.name() == "name")
{
btnObj.name = reader.readElementText();
}
else if (reader.isStartElement() && reader.name() == "command")
{
btnObj.cmd = reader.readElementText();
}
else if (reader.isStartElement() && reader.name() == "visible")
{
btnObj.visible = reader.readElementText() == "true" ? true : false;
}
else if (reader.isStartElement() && reader.name() == "tips")
{
btnObj.tips = reader.readElementText();
}
reader.readNext();
}
_groupObj.btnVec.append(btnObj);
}
reader.readNext();
}
_groupList.append(_groupObj);
}
reader.readNext();
}
mapData[widgetName] = _groupList;
}
reader.readNext();
}
}
获取完数据后,我们就可以根据map里的数据 进行绘图啦