QTreeWidgetItem* FatherNode = new QTreeWidgetItem(ui.treeWidget, QStringList(QString("父节点"))); QTreeWidgetItem* SonNode = new QTreeWidgetItem(QStringList(QString("子节点"))); SonNode->setCheckState(0, Qt::Unchecked); FatherNode->addChild(SonNode); FatherNode->addChild(SonNode);为什么这段代码执行结果中FatherNode下没有两个SonNode
时间: 2023-11-22 13:54:52 浏览: 137
这段代码执行的结果中FatherNode下只有一个SonNode是因为在addChild()函数中加入的是一个指针,而不是一个对象。当你将SonNode对象指针作为参数传递给addChild()函数时,实际上是将指针的值传递给了函数,而不是复制或创建了新的对象。因此,第二次addChild()函数调用会将原来的SonNode从FatherNode中移除,并将其添加到新的父节点中。如果你想要在FatherNode下添加两个SonNode,应该创建两个不同的QTreeWidgetItem对象,而不是重复使用同一个对象。修正后的代码如下:
```
QTreeWidgetItem* FatherNode = new QTreeWidgetItem(ui.treeWidget, QStringList(QString("父节点")));
QTreeWidgetItem* SonNode1 = new QTreeWidgetItem(QStringList(QString("子节点1")));
SonNode1->setCheckState(0, Qt::Unchecked);
QTreeWidgetItem* SonNode2 = new QTreeWidgetItem(QStringList(QString("子节点2")));
SonNode2->setCheckState(0, Qt::Unchecked);
FatherNode->addChild(SonNode1);
FatherNode->addChild(SonNode2);
```
这样就可以在FatherNode下添加两个不同的子节点了。
阅读全文