Qt:QTreeWidge添加节点

封装了两个QTreeWidget添加节点的功能函数,里面包含了节点的常用属性,如setData,type,setToolTip,setExpanded,setFlags等,比较通过特此记录。

一,给treeWidget添加根节点

/**
 * @brief MainWindow::AddTreeRoot 给treeWidget添加根节点
 * @param itemName 节点名
 * @param data 节点携带数据内容
 * @param treeWidget 指针
 * @param ItemType 用户自己指定节点类型
 * @return 返回添加的新根节点指针
 */
QTreeWidgetItem* MainWindow::AddTreeRoot(QString itemName,QString data, QTreeWidget* treeWidget,int ItemType)
{
    if(!treeWidget) return nullptr;
    //有同级同名节点就返回该节点
    for (int i=0;i<treeWidget->topLevelItemCount();i++)
    {
        QTreeWidgetItem *item=treeWidget->topLevelItem(i);
        if(item->text(0)==itemName) return item;
    }
    //没有就创建
    QTreeWidgetItem*  item=new QTreeWidgetItem(treeWidget,ItemType);
    item->setText(0,itemName);
    // item->setTextColor(0, QColor(85,0,127));//设置字体颜色
    item->setFlags(Qt::ItemIsSelectable  | Qt::ItemIsEnabled | Qt::ItemIsAutoTristate);
    item->setData(0,Qt::UserRole,data);
    //item->setCheckState(0,Qt::Unchecked);
    item->setToolTip(0,data);
    item->setExpanded( true);
    treeWidget->addTopLevelItem(item);//添加顶层节点

    return item;
}

二,给一个父节点QTreeWidgetItem添加子节点

/**
 * @brief MainWindow::addChildItem 给一个父节点QTreeWidgetItem添加子节点
 * @param parentItem 父节点
 * @param itemName 子节点名
 * @param data 子节点携带数据值
 * @param ItemType  子节点类型
 * @return 返回添加的新节点指针
 */
QTreeWidgetItem* MainWindow::addChildItem(QTreeWidgetItem* parentItem,QString itemName,QString data,int ItemType)
{
    if(!parentItem)return nullptr ;
    
    //有就返回
    for (int i=0;i<parentItem->childCount();i++)
    {
        QTreeWidgetItem *item=parentItem->child(i);
        if(item->text(0)==itemName)
        {
          
            return item;
        }
    }
    //没有就创建
    QTreeWidgetItem * childItem=new QTreeWidgetItem(ItemType);
    childItem->setText(0,itemName);
    childItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsAutoTristate);

    childItem->setData(0,Qt::UserRole,data);
    childItem->setToolTip(0,data);
    childItem->setExpanded( true);//默认节点展开
    parentItem->addChild(childItem);
    
   
    return childItem;

}
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QTreeWidget是一个树形控件,用于显示树状结构的数据。要向QTreeWidget添加节点和内容,可以按照以下步骤进行: 1. 创建QTreeWidgetItem对象:使用QTreeWidgetItem类创建一个新的树节点对象。 2. 设置节点文本:使用QTreeWidgetItem的setText方法,为节点设置文本内容。 3. 添加节点:使用parent节点的addChild方法,将新创建的节点添加为parent节点的子节点。 代码示例: ``` # 创建树控件对象 treeWidget = QTreeWidget() # 创建根节点对象 root = QTreeWidgetItem(treeWidget) root.setText(0, "Root Node") # 创建子节点对象 child1 = QTreeWidgetItem(root) child1.setText(0, "Child 1") # 创建子子节点对象 grandchild = QTreeWidgetItem(child1) grandchild.setText(0, "Grandchild") # 设置根节点的子节点展开模式 root.setExpanded(True) # 将根节点添加到树控件中 treeWidget.addTopLevelItem(root) ``` 通过以上代码,我们创建了一个树控件对象treeWidget,并为其添加了一个根节点root,以及一个子节点child1和一个子子节点grandchild。每个节点的文本内容可以使用setText方法进行设置。最后,我们将根节点添加到树控件中使用addTopLevelItem方法,即可显示出树形结构的节点和内容。 可以根据具体需求,添加更多的节点和子节点,以构建复杂的树状结构。 ### 回答2: QTreeWidget是一个用于显示树状结构的小部件,可以通过添加节点和内容来构建树。 首先,我们需要创建一个QTreeWidget对象: ```python tree_widget = QTreeWidget() ``` 为了添加节点,我们可以使用QTreeWidgetItem类,并将其添加到树中。节点可以包含子节点,我们可以通过调用父节点对象的addChild方法来实现。添加节点的方法与添加节点类似。 ```python root = QTreeWidgetItem(tree_widget) root.setText(0, "根节点") # 在第一列设置节点文本 child1 = QTreeWidgetItem(root) child1.setText(0, "子节点1") child2 = QTreeWidgetItem(root) child2.setText(0, "子节点2") sub_child = QTreeWidgetItem(child2) sub_child.setText(0, "子节点2的子节点") ``` 除了设置节点的文本之外,还可以设置节点的图标、背景颜色等属性。 在QTreeWidget中添加节点后,我们可以为节点添加内容。可以在每个节点中插入小部件: ```python label = QLabel() label.setText("这是子节点1的内容") tree_widget.setItemWidget(child1, 1, label) # 将label小部件插入子节点1的第二列 button = QPushButton() button.setText("这是子节点2的内容") tree_widget.setItemWidget(child2, 1, button) # 将button小部件插入子节点2的第二列 ``` 以上是将小部件添加节点中的基本方法。通过添加节点和内容,我们可以构建自己的树状结构,并在每个节点中显示不同的内容。 ### 回答3: QTreeWidget是Qt库中提供的一种树形结构的控件,可以用来显示层级结构的数据。要添加节点和内容,可以按照以下步骤进行: 1. 创建QTreeWidgetItem对象,并设置其文本内容。 2. 将QTreeWidgetItem对象添加QTreeWidget中。 3. 如果需要,可以设置父子关系,将节点添加为其他节点的子节点。 下面是一个示例代码,演示了如何添加一个节点和设置节点的文本内容: ```cpp // 创建一个QTreeWidgetItem对象 QTreeWidgetItem *item = new QTreeWidgetItem(); // 设置节点的文本内容 item->setText(0, "节点1"); // 将节点添加QTreeWidget中 treeWidget->addTopLevelItem(item); ``` 如果要设置节点的子节点,可以使用QTreeWidgetItem对象的addChild()方法来添加节点。下面是一个示例代码,演示了如何添加一个父节点和两个子节点的过程: ```cpp // 创建父节点 QTreeWidgetItem *parentItem = new QTreeWidgetItem(); parentItem->setText(0, "父节点"); // 创建子节点 QTreeWidgetItem *childItem1 = new QTreeWidgetItem(); childItem1->setText(0, "子节点1"); QTreeWidgetItem *childItem2 = new QTreeWidgetItem(); childItem2->setText(0, "子节点2"); // 设置父子关系 parentItem->addChild(childItem1); parentItem->addChild(childItem2); // 将父节点添加QTreeWidget中 treeWidget->addTopLevelItem(parentItem); ``` 通过以上步骤,我们可以向QTreeWidget控件中添加节点和设置节点的文本内容。可以根据实际需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值