QTreeWidgetItem类

QTreeWidgetItem为使用QTreeWidget类提供一个方便的项(item)。


Header:#include <QTreeWidgetItem>
CMake:find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake:QT += widgets

【详细描述】

QTreeWidgetItem用于保存树控件的信息行。行通常包含多列数据,每列数据可以包含一个文本标签和一个图标。

QTreeWidgetItem类是一个方便的类,它取代了Qt 3中的QListViewItem类。它提供了与QTreeWidget类一起使用的项。

项通常由父项构造而成,父项可以是QTreeWidget(对于顶级项目)或QTreeWidgetItem(对于树中较低级别的项目)。例如,以下代码构造了一个顶级项来表示世界城市,并添加了一个奥斯陆条目作为子项:

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"));

 可以通过指定项目在构造时遵循的项目来按特定顺序添加项目:

QTreeWidgetItem *planets = new QTreeWidgetItem(treeWidget, cities);
    planets->setText(0, tr("Planets"));

项目中的每一列都可以用setBackground() 函数设置自己的背景笔刷,当前背景笔刷可以用 background()找到。每列的文本标签都可以使用其自己的字体和前景笔刷呈现。它们使用 setFont() 和setForeground() 函数指定,并使用font()和foreground()读取。

顶级项目与树中较低级别的项目之间的主要区别在于,顶级项目没有parent()。此信息可用于区分项目,并且在树中插入和删除项目时非常有用。可以使用 takeChild()函数删除项的子项,并将其使用 insertChild() 插入到子项列表中的给定索引处。

默认情况下,项目是启用的(enabled)、可选的(selectable)、可检查的( checkable),并且可以是拖放操作的源。可以通过调用具有适当值的setFlags() 来更改每个项目的标志(请参阅Qt::ItemFlags)。可以使用 setCheckState() 函数设置可检查状态。相应的checkState() 函数指示当前是否选中了该项目。

 子类化 

在对 QTreeWidgetItem 进行子类化以提供自定义项目时,可以为它们定义新类型,以便将它们与标准项目区分开来。需要此功能的子类的构造函数需要调用具有等于或大于 的新类型值的基类构造函数UserType

 成员类型文档 

enum QTreeWidgetItem::ChildIndicatorPolicy

名称描述
QTreeWidgetItem::ShowIndicator0即使没有子项,也会显示此项的展开和折叠控件。
QTreeWidgetItem::DontShowIndicator1即使有孩子,也不会显示扩展和折叠的控件。如果强制打开节点,用户将无法展开或折叠项目。
QTreeWidgetItem::DontShowIndicatorWhenChildless2如果项目包含子项,将显示用于展开和折叠的控件。

enum QTreeWidgetItem::ItemType

此枚举描述用于描述树构件项的类型。

名称描述
QTreeWidgetItem::Type0树构件项的默认类型。
QTreeWidgetItem::UserType1000自定义类型的最小值。UserType 以下的值由 Qt 保留。

您可以在QTreeWidgetItem子类中定义新的用户类型,以确保对自定义项进行特殊处理。例如,对项目进行排序时。


【公共类型】

enumChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless }
enumItemType { Type, UserType }

【公有函数】

一共有4个参数:

1.构造指type的树形控件项。

2.给定的QStringList将设置为项目中每列的文本。

3.新构造项附加到parent。

4.新构造项插入到 preceding项之后。

右侧多种构造函数是以上4个参数的组合,新构造的项必须插入到树构件中。

最后一种是构造other的副本。注意,不会复制type() 和 treeWidget()。

QTreeWidgetItem(int type = Type)
QTreeWidgetItem(const QStringList &strings, int type = Type)
QTreeWidgetItem(QTreeWidget *parent, int type = Type)
QTreeWidgetItem(QTreeWidget *parent, const QStringList &strings, int type = Type)
QTreeWidgetItem(QTreeWidget *parent, QTreeWidgetItem *preceding, int type = Type)
QTreeWidgetItem(QTreeWidgetItem *parent, int type = Type)
QTreeWidgetItem(QTreeWidgetItem *parent, const QStringList &strings, int type = Type)
QTreeWidgetItem(QTreeWidgetItem *parent, QTreeWidgetItem *preceding, int type = Type)
QTreeWidgetItem(const QTreeWidgetItem &other)
virtual~QTreeWidgetItem()
voidaddChild(QTreeWidgetItem *child)
child项追加到子项列表中。
voidaddChildren(const QList<QTreeWidgetItem *> &children)
将给定的children列表追加到项目中。
QBrushbackground(int column) const
返回用于呈现指定column的背景画笔。
Qt::CheckStatecheckState(int column) const
返回给定column标签的检查状态。
QTreeWidgetItem *child(int index) const
返回项的子项列表中index给定的项。
intchildCount() const
返回子项的数目。
QTreeWidgetItem::ChildIndicatorPolicychildIndicatorPolicy() const
返回项指示器策略。此策略决定何时显示树枝展开/折叠指示器。
virtual QTreeWidgetItem *clone() const
创建项及其子项的深层副本。
intcolumnCount() const
virtual QVariantdata(int column, int role) const
返回项的columnrole的值。
Qt::ItemFlagsflags() const
返回用于描述项的标志。标志决定是否可以检查、编辑和选择项目。
QFontfont(int column) const
返回用于呈现指定column中的文本的字体。
QBrushforeground(int column) const
返回用于呈现指定column的前景(例如文本)的画笔。设置默认构造的画笔将允许视图使用样式中的默认颜色。
QIconicon(int column) const
返回在指定的column中显示的图标。
intindexOfChild(QTreeWidgetItem *child) const
返回给定的的索引child 在项目的子项目列表中。
voidinsertChild(int index, QTreeWidgetItem *child)

child子项列表 index中插入项。如果孩子已经插入到其他地方,则不会再次插入。

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

将给定的children列表插入到index的项子项列表中。已插入到其他位置的子项将不会插入。

boolisDisabled() const
如果项目被禁用,则返回true;否则返回false
boolisExpanded() const
如果项目展开,
boolisFirstColumnSpanned() const
如果项跨越一行中的所有列
boolisHidden() const
如果项目处于隐藏状态,则返回true,否则返回 false
boolisSelected() const
如果选择该项,则返回true,否则返回 false
QTreeWidgetItem *parent() const
返回项的父项。
virtual voidread(QDataStream &in)
从流中读取项目。这只会将数据读取到单个项目中。
voidremoveChild(QTreeWidgetItem *child)
删除child指示的给定项。删除的项不会被删除。
voidsetBackground(int column, const QBrush &brush)

将给定标签column的背景画笔设置为brush,设置默认构造的画笔将允许视图使用样式中的默认颜色。

注意: 如果与Qt Style Sheets用于同一控件,则在设置冲突时,样式表将优先。

voidsetCheckState(int column, Qt::CheckState state)
将处于给定 column检查状态的项设置为state
voidsetChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy)
设置项目指示符policy。此策略决定何时显示树枝展开/折叠指示器。默认值为DontShowIndicatorWhenChildless 。
virtual voidsetData(int column, int role, const QVariant &value)

将项 column的 role 值设置为给定的value。role描述由value指定的数据类型,并由枚举 Qt::ItemDataRole定义。注意: 默认实现将 Qt::ItemDataRole视为引用相同的数据。

voidsetDisabled(bool disabled)
如果为 true则禁用,否则启用该项。
voidsetExpanded(bool expand)

如果expand 为 true,则将第一部分设置为跨越所有列;否则,将显示所有项目部分。

警告: QTreeWidgetItem在调用此函数之前,必须将其添加到QTreeWidget中。

voidsetFirstColumnSpanned(bool span)
如果 span 为 true,则将第一部分设置为跨越所有列;否则,将显示所有项目部分。
voidsetFlags(Qt::ItemFlags flags)
将项的标志设置为给定的flags,这些决定了是否可以选择或修改项目。这通常用于禁用项目。
voidsetFont(int column, const QFont &font)
将用于显示文本的column设置为给定的font
voidsetForeground(int column, const QBrush &brush)
将给定标签column的前景画笔设置为指定的brush
voidsetHidden(bool hide)
如果为 true,则隐藏项目,否则显示该项目。
voidsetIcon(int column, const QIcon &icon)
将要在给定的column中显示的图标设置为icon
voidsetSelected(bool select)
将项的选定状态设置为select
voidsetSizeHint(int column, const QSize &size)

将给定的column树项的大小提示设置为size。如果未设置大小提示或无效,则项委托将根据项数据计算大小提示。

voidsetStatusTip(int column, const QString &statusTip)
将给定column的状态提示设置为给定的statusTip,需要启用鼠标跟踪才能使此功能正常工作。
voidsetText(int column, const QString &text)
将要在给定column中显示的文本设置为给定的text
voidsetTextAlignment(int column, Qt::Alignment alignment)
将给定column标签的文本对齐方式设置为指定alignment
voidsetToolTip(int column, const QString &toolTip)
将给定column,的工具提示设置为toolTip
voidsetWhatsThis(int column, const QString &whatsThis)
将 “What's This?” 帮助设置为whatsThis
QSizesizeHint(int column) const
返回给定 column的树项设置的大小提示(请参见 QSize)。
voidsortChildren(int column, Qt::SortOrder order)

使用给定的order对项的子项进行排序,按给定column中的值进行排序。

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

QStringstatusTip(int column) const
返回给定column内容的状态提示。
QTreeWidgetItem *takeChild(int index)
删除index项并返回它,否则返回 0。
QList<QTreeWidgetItem *>takeChildren()
删除子列表并返回它,否则返回一个空列表。
QStringtext(int column) const
返回 column指定的文本。
inttextAlignment(int column) const
返回给定column中标签的文本对齐方式。
QStringtoolTip(int column) const
返回给定column的工具提示。
QTreeWidget *treeWidget() const
返回包含项的树构件。
inttype() const
返回传递给构造函数的类型。
QStringwhatsThis(int column) const
返回给定column的 “What's This?” 帮助 。
virtual voidwrite(QDataStream &out) const
将项目写入输出流 。这仅从一个项目写入数据。
virtual booloperator<(const QTreeWidgetItem &other) const
如果项中的文本小于other项中的文本,则返回true,否则返回 false
QTreeWidgetItem &operator=(const QTreeWidgetItem &other)
如果项中的文本等于other项中的文本,则返回true,否则返回 false

【受保护函数】 

voidemitDataChanged()

使与此项关联的模型发出此项的dataChanged() 信号。

通常,只有在已子类化并重新实现 data() 和/或 setData()时,才需要调用此函数。


QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item)
QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item)

<<< 返回根页面

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 QTreeWidgetItem 模板,其中包括一个自定义数据型和一些重写方法,使其更容易存储和检索自定义数据: ```cpp template<typename T> class CustomTreeWidgetItem : public QTreeWidgetItem { public: CustomTreeWidgetItem(QTreeWidget* parent = nullptr) : QTreeWidgetItem(parent) {} CustomTreeWidgetItem(QTreeWidgetItem* parent) : QTreeWidgetItem(parent) {} CustomTreeWidgetItem(QTreeWidget* parent, const QStringList& strings) : QTreeWidgetItem(parent, strings) {} CustomTreeWidgetItem(QTreeWidgetItem* parent, const QStringList& strings) : QTreeWidgetItem(parent, strings) {} void setData(int column, int role, const T& value) { QTreeWidgetItem::setData(column, role, QVariant::fromValue(value)); } T data(int column, int role) const { return QTreeWidgetItem::data(column, role).value<T>(); } }; ``` 在这个模板中,我们使用 QVariant::fromValue() 方法将自定义数据型存储在 QTreeWidgetItem 中,并使用 QVariant::value() 方法将其转换回原始型。 您可以使用此模板来创建包含自定义数据的 QTreeWidgetItem,例如: ```cpp // 创建一个包含自定义数据的 QTreeWidgetItem CustomTreeWidgetItem<MyTemplateData>* item = new CustomTreeWidgetItem<MyTemplateData>(); item->setData(0, Qt::UserRole, myData); // 检索自定义数据 MyTemplateData data = item->data(0, Qt::UserRole); ``` 请注意,此模板仅适用于一种自定义数据型。如果您需要在同一 QTreeWidgetItem 中存储多种型的数据,则需要使用 QVariant 型,并手动进行型检查和转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值