首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QTreeWidgetItem创建子树

用QTreeWidgetItem创建子树
EN

Stack Overflow用户
提问于 2013-01-27 20:04:03
回答 1查看 682关注 0票数 1

我正在尝试使用QTreeWidgetItem创建一个子树。以下是代码

代码语言:javascript
复制
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);

这就是方法:

代码语言:javascript
复制
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为根项的"subtree_1“时,它是可以的,但是当我想创建一个以m_pText为根项的"subtree_2”时,它就崩溃了。

P.S PTR()等于*parent。

我不明白问题出在哪里。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-27 22:03:26

如果您的PTR(QTreeQWidgetItem)宏生成QTreeWidgetItem*,则createTreeItem函数未初始化item。

最简单和最符合逻辑的修复方法似乎是更改createTreeItem函数以返回新项:

代码语言:javascript
复制
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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14547132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档