太阳风暴 2020-06-11 09:46 采纳率: 0%
浏览 697
已采纳

QTreeWidget添加多个节点只能显示一个

QTreeWidget添加了多个子节点,只能显示其中一个子节点,我不知道是不是插入部分有问题

 QTreeWidgetItem *Top1Item = new QTreeWidgetItem();
    QTreeWidgetItem *Top2Item = new QTreeWidgetItem;
    QTreeWidgetItem *Top3Item = new QTreeWidgetItem;

    Top1Item->setText(0, tr("1级菜单1"));
    Top2Item->setText(0, tr("1级菜单2"));
    Top3Item->setText(0, tr("1级菜单3"));

    QList <QTreeWidgetItem *> TopLists;
    TopLists<<Top1Item<<Top2Item<<Top3Item;

    QTreeWidgetItem *SecondItem1 = new QTreeWidgetItem;
    QTreeWidgetItem *SecondItem2 = new QTreeWidgetItem;
    QTreeWidgetItem *SecondItem3 = new QTreeWidgetItem;
    QTreeWidgetItem *SecondItem4 = new QTreeWidgetItem;

    SecondItem1->setText(0, "二级菜单1");
    SecondItem2->setText(0, "二级菜单2");
    SecondItem3->setText(0, "二级菜单3");
    SecondItem4->setText(0, "二级菜单4");

    QList <QTreeWidgetItem *> SecondLists;
    SecondLists<<SecondItem1<<SecondItem2<<SecondItem3<<SecondItem4;

    QTreeWidgetItem *ThirdItem1 = new QTreeWidgetItem;
    QTreeWidgetItem *ThirdItem2 = new QTreeWidgetItem;
    QTreeWidgetItem *ThirdItem3 = new QTreeWidgetItem;

    ThirdItem1->setText(0, "三级菜单1");
    ThirdItem2->setText(0, "三级菜单2");
    ThirdItem3->setText(0, "三级菜单3");
    QList <QTreeWidgetItem *> ThirdLists;
    ThirdLists<<ThirdItem1<<ThirdItem2<<ThirdItem3;

    QTreeWidgetItem *Item = new QTreeWidgetItem;
    Item->setText(0, "子项");
    qDebug()<<"TopLists.size: "<<TopLists.size()<<"SecondLists.size: "<<SecondLists.size()<<"ThirdLists.size: "<<ThirdLists.size();

//插入节点
    for (int i = 1;i < TopLists.size();i++) {
        TopLists[i]->addChildren(SecondLists);
        for (int j = 0;j < SecondLists.size();j++) {
            SecondLists[i]->addChildren(ThirdLists);
            for (int k= 0;k < ThirdLists.size();k++) {
                ThirdLists[i]->addChild(Item);
            }
        }
    }

    ui->treeWidget->insertTopLevelItems(0, TopLists);

运行结果如下图

  • 写回答

1条回答 默认 最新

  • qtchen_1988 2020-06-11 18:37
    关注
    
    //插入节点
        for (int i = 1;i < TopLists.size();i++) {
            TopLists[i]->addChildren(SecondLists);
            for (int j = 0;j < SecondLists.size();j++) {
                SecondLists[i]->addChildren(ThirdLists);
                for (int k= 0;k < ThirdLists.size();k++) {
                    ThirdLists[i]->addChild(Item);
                }
            }
        }
    
            ====>
    
        //插入节点    
        for (int k= 0;k < ThirdLists.size();k++) {
            ThirdLists[i]->addChild(Item);
        }
        for (int j = 0;j < SecondLists.size();j++) {
            SecondLists[i]->addChildren(ThirdLists);
        }
        for (int i = 1;i < TopLists.size();i++) {
            TopLists[i]->addChildren(SecondLists);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 12月1日

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集