1、Qt中的QTreeWidget和QTreeWidgetItem 的使用可以实现树形表。 按照MVC设计,Qt中提倡用QTreeView,但是没有提供对应的Model,可以通过埠们萁猕自定义QStandardItemModel一起实现,但是比较复杂。不推荐使用。/*** @brief 初始化报表数据*/void ReportTree::initReportData(){ //根节点的数据项 QStringList itemStringlist; itemStringlist << "All EventS" <<"10000" << "100%" << "100%"; QTreeWidgetItem *rootItem = new QTreeWidgetItem(ui.treeWidget, itemStringlist); QPixmap pixmap(10,10);//新建一个Pixmap图 pixmap.fill(QColor(Qt::black));//填充色 QIcon icon(pixmap); rootItem->setIcon(0, icon);//设置图标 //根节点的孩子节点1 QStringList leafStringList1; leafStringList1 << "Gate1" << "8000"<<"80%"<<"80%"; QTreeWidgetItem *leafItem1 = new QTreeWidgetItem(rootItem, leafStringList1); pixmap.fill(QColor(Qt::red)); leafItem1->setIcon(0, pixmap); //根节点的孩子节点2 QStringList leafStringList2; leafStringList2 << "Gate2" << "4000" << "40%" << "40%"; QTreeWidgetItem *leafItem2 = new QTreeWidgetItem(rootItem, leafStringList2); pixmap.fill(QColor(Qt::green)); leafItem2->setIcon(0, pixmap); //根节点的孩子节点3 QStringList leafStringList3; leafStringList3 << "Gate3" << "2000" << "20%" << "20%"; QTreeWidgetItem *leafItem3 = new QTreeWidgetItem(rootItem, leafStringList3); pixmap.fill(QColor(Qt::blue)); leafItem3->setIcon(0, pixmap); //节点3的孩子节点1_in_3 QStringList leafStringList1_In_3; leafStringList1_In_3 << "Gate1_in_3" << "1000" << "50%" << "10%"; QTreeWidgetItem *leafItem1_in_3 = new QTreeWidgetItem(leafItem3, leafStringList1_In_3); pixmap.fill(QColor(Qt::gray)); leafItem1_in_3->setIcon(0, pixmap); //给节点3添加孩子节点 leafItem3->addChild(leafItem1_in_3); //节点3的孩子节点2_in_3 QStringList leafStringList2_In_3; leafStringList2_In_3 << "Gate2_in_3" << "500" << "40%" << "2%"; QTreeWidgetItem *leafItem2_in_3 = new QTreeWidgetItem(leafItem3, leafStringList2_In_3); pixmap.fill(QColor(Qt::darkCyan)); leafItem2_in_3->setIcon(0, pixmap); leafItem3->addChild(leafItem2_in_3); //给根节点添加孩子节点 rootItem->addChild(leafItem1); rootItem->addChild(leafItem2); rootItem->addChild(leafItem3);}

4、作者:柳北风儿 博客