class A
{
QTreeWidget Tree;
QTreeWidgetItem Item;
QTreeWidgetItem* pointer;
}
A::A()
{
...
Item = QTreeWidgetItem(&Tree); // Version 1
Item.setText(0, "Item");
pointer = new QTreeWidgetItem(&Tree); // Version 2
pointer->setText(0, "Pointer");
...
}
很抱歉没有提供完整的示例,我希望这已经足够了。
版本2工作正常,项目显示在GUI中的树中。版本1不起作用(该项目未显示)。为什么呢?
物体仍然存活(即未被破坏)。
答案 0 :(得分:1)
在版本1中,您通过为其分配另一个Item
来初始化QTreeWidgetItem
。但QTreeWidgetItem
副本分配并不复制所有内容:
QTreeWidgetItem& QTreeWidgetItem :: operator =(const QTreeWidgetItem& 其它)强>
为此项目分配其他数据和标志。注意type()和 treeWidget()不会被复制。