动态是指的数据不确定,需要根据项目需求定协议
这个项目是设备与软件的对应关系,一个设备可以对应很多个软件,则就是典型的map结构
.cpp中对树的初始化
void DetsCoreWidget::initTreeView()
{
if(nullptr == m_treeViewModel)
{
m_treeViewModel = new QStandardItemModel();
}
ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置节点不可编辑
ui->treeView->setFrameStyle(QFrame::NoFrame);//去掉边框
QStandardItem *itemRoot= m_treeViewModel->invisibleRootItem(); //创建根节点,抽象item,没有实际数据
QMap<QString, QVector<CustomProgram> >::iterator iter = m_customEquipment.equipment.begin();
while (iter != m_customEquipment.equipment.end()){
QStandardItem *itemEqu= new QStandardItem(iter.key());
itemRoot->appendRow(itemEqu);
QVector<CustomProgram> vecCus = iter.value();
QList<QStandardItem*> sofList; //同类型的
for(int index = 0; index < vecCus.size(); index++)
{
QString childName = vecCus.at(index).name; //取的是name值
QStandardItem *itemChild= new QStandardItem(QString(childName));
sofList.append(itemChild);
}
itemEqu->appendRows(sofList);
iter++;
}
ui->treeView->setModel(m_treeViewModel);
这里用了迭代器进行遍历,方便直接可以取出值
初始化一些数据验证是否成功
结果