使用QTreeWidgetItem创建子树
我正在尝试使用QTreeWidgetItem创建子树。 这是密码使用QTreeWidgetItem创建子树,qt,qtreewidget,qtreewidgetitem,Qt,Qtreewidget,Qtreewidgetitem,我正在尝试使用QTreeWidgetItem创建子树。 这是密码 m_pRoot = new QTreeWidgetItem(treeWidget); m_pRoot->setText(0, "root"); m_pRoot->setData(0, Qt::UserRole, IT_ROOT); createTreeItem(m_pRoot, m_pText, "subtree_1", IT_TEXT); m_pRoot->setExpanded(true); c
m_pRoot = new QTreeWidgetItem(treeWidget);
m_pRoot->setText(0, "root");
m_pRoot->setData(0, Qt::UserRole, IT_ROOT);
createTreeItem(m_pRoot, m_pText, "subtree_1", IT_TEXT);
m_pRoot->setExpanded(true);
createTreeItem(m_pText, m_pPlainText, "subtree_2", IT_TEXT);
这就是方法:
void createTreeItem(PTR(QTreeWidgetItem) parent, PTR(QTreeWidgetItem) item, CREF(QString) name, ItemType itemType)
{
item = new QTreeWidgetItem(parent);
item->setText(0, name);
item->setData(0, Qt::UserRole, QVariant(itemType));
}
当我创建一个以m_pRoot作为根项的“子树_1”时,它是正常的,但当我想创建以m_pText作为根项的“子树_2”时,它会崩溃
p.S PTR()等于*父级
我不明白出了什么问题。有什么建议吗?如果PTR(QTreeQWidgetItem)宏生成QTreeWidgetItem*,则createTreeItem函数不会初始化该项
最简单、最合理的修复方法似乎是更改createTreeItem函数以返回新项:
QTreeWidgetItem* createTreeItem(PTR(QTreeWidgetItem) parent, PTR(QTreeWidgetItem) item,
CREF(QString) name, ItemType itemType)
{
item = new QTreeWidgetItem(parent);
item->setText(0, name);
item->setData(0, Qt::UserRole, QVariant(itemType));
return item;
}
并使用返回值初始化m_pText。如果PTR(QTreeQWidgetItem)宏生成QTreeWidgetItem*,则createTreeItem函数不会初始化该项
最简单、最合理的修复方法似乎是更改createTreeItem函数以返回新项:
QTreeWidgetItem* createTreeItem(PTR(QTreeWidgetItem) parent, PTR(QTreeWidgetItem) item,
CREF(QString) name, ItemType itemType)
{
item = new QTreeWidgetItem(parent);
item->setText(0, name);
item->setData(0, Qt::UserRole, QVariant(itemType));
return item;
}
并使用返回值初始化m_pText