关于Qt中qTreeWidgetItem的setData问题

QTreeWidgetItem中的setData函数,

 void QTreeWidgetItem::setData ( int column, int role, const QVariant & value )

我在用的时候,在一个叶子节点中保存多个数据,是采用setData(1,32,data1),setData(2,32,data2)....这种方式。但是我实在是搞不明白,这个column作用是干什么的?有什么意义???

如果说我采用model/view方式,自己定义model能不能实现一个叶子节点保存多个数据这种效果??

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章讲的很详细,请看:QT的QTreeWidgetItem类的使用
  • 除此之外, 这篇博客: Qt模型视图框架:QTreeWidgetItem、QTreeWidgetItemIterator中的 QTreeWidgetItem 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    QTreeWidgetItem 类提供了一个与 QTreeWidget 类一起使用的项目。例:

         QTreeWidgetItem *cities = new QTreeWidgetItem(treeWidget);
         cities->setText(0, tr("Cities"));
         QTreeWidgetItem *osloItem = new QTreeWidgetItem(cities);
         osloItem->setText(0, tr("Oslo"));
         osloItem->setText(1, tr("Yes"));

    1、enum QTreeWidgetItem::ChildIndicatorPolicy

    • ShowIndicator:即使没有子项,也会为此项显示展开和折叠的控件。
    • DontShowIndicator:即使有子项也永远不会显示展开和折叠的控件。 
    • DontShowIndicatorWhenChildless:如果项目包含子项,将显示用于展开和折叠的控件。

    2、enum QTreeWidgetItem::ItemType:此枚举描述了用于描述树小部件项的类型。

    • Type:树小部件项目的默认类型。
    • UserType:自定义类型的最小值。低于 UserType 的值由 Qt 保留。

    可以在 QTreeWidgetItem 子类中定义新的用户类型。

    1、void addChild(QTreeWidgetItem *child)

          void addChildren(const QList<QTreeWidgetItem *> &children)

    添加子项。

    2、QTreeWidgetItem * child(int index)

    返回项的子项列表中index处的项。

    3、int childCount()

    子项数目。

    4、QTreeWidgetItem * clone()

    创建项目及其子项的深拷贝。

    5、int columnCount()

    返回项目中的列数。

    6、int indexOfChild(QTreeWidgetItem *child)

    返回项的子项列表中给定子项的索引。

    7、void insertChild(int index, QTreeWidgetItem *child)

         void insertChildren(int index, const QList<QTreeWidgetItem *> &children)

    在子项列表中的索引处插入子项。如果child已经插入其他地方,则不会再次插入。

    8、void removeChild(QTreeWidgetItem *child)

    移除 child 指示的给定项目。移除的项目不会被删除。

    9、void sortChildren(int column, Qt::SortOrder order)

    根据给定列中的值,使用给定顺序对项目的子项进行排序。

    注意:如果项目不与 QTreeWidget 关联,则此函数不执行任何操作。

    10、QTreeWidgetItem * takeChild(int index)

    移除索引处的项目并返回。

    11、QList<QTreeWidgetItem *> takeChildren()

    移除子项列表并返回它。



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^