Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用QTreeWidgetItem创建子树_Qt_Qtreewidget_Qtreewidgetitem - Fatal编程技术网

使用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

我正在尝试使用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);
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