模型视图(09):【类】QStandardItem[官翻]

本文详细介绍了QStandardItem类,它与QStandardItemModel类配合使用。项目可包含文本、图标等,有背景、字体等属性,默认有多种状态。可存储特定数据,构建层次结构,还能对子元素排序。同时介绍了子类化方法、公共类型、各类函数及相关非成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QStandardItem类

QStandardItem类提供了一个与QStandardItemModel类一起使用的项。

Header:#include < QStandardItem>
qmake:QT += gui
Inherits:
Inherited By:

详述

项目通常包含文本图标复选框

每个项目都可以有自己的背景刷,这是通过setBackground()函数设置的。使用background()可以找到当前的背景画笔。每个项目的文本标签可以用自己的字体和笔刷呈现。它们由setFont()和setForeground()函数指定,使用font()和foreground()进行读取。

默认情况下,项目是启用的、可编辑的、可选择的、可检查的,并且可以用作拖放操作的和拖放目标。可以通过调用setFlags()来更改每个项的标志。可检查项可以使用setCheckState()函数进行检查和取消检查。对应的checkState()函数指示当前是否检查该项。

可以通过调用setData()将特定于应用程序的数据存储在项中。

每个项可以有一个包含子项的二维表。这使得构建项目的层次结构成为可能。典型的层次结构是树,在这种情况下,子表是一个只有一列(列表)的表。

子表的维度可以用setRowCount()和setColumnCount()设置。可以使用setChild()将项定位到子表中。获取一个指向带有child()的子条目的指针。还可以使用insertRow()和insertColumn()插入子元素的新行和新列,或者使用appendRow()和appendColumn()追加。在使用追加和插入函数时,子表的维度将根据需要增长。

可以使用removeRow()或takeRow()删除现有的子行;相应地,可以使用removeColumn()或takeColumn()删除列。

可以通过调用sortChildren()对项的子元素进行排序。

子类化

当子类化QStandardItem以提供定制项时,可以为它们定义新的类型,以便与基类区分。应该重新实现type()函数,以返回一个等于或大于UserType的新类型值。

如果您想要执行数据查询的自定义处理和/或控制项数据的表示方式,请重新实现data()和setData()。

如果您希望QStandardItemModel能够按需创建自定义项目类的实例,请重新实现clone()(参见QStandardItemModel::setItemPrototype())。

如果希望控制项如何以序列化形式表示,请重新实现read()和write()。

如果要控制项比较的语义,请重新实现operator<()。operator<()在使用sortChildren()或QStandardItemModel::sort()排序时确定排序顺序。

公共类型

enum ItemType

此枚举描述用于描述标准项的类型。

ConstantValueDescription
Type0标准项的默认类型。
UserType1000自定义类型的最小值。UserType以下的值由Qt保留。

公共函数

构造析构

  1. QStandardItem(int rows, int columns = 1)
  2. QStandardItem(const QIcon &icon, const QString &text)
  3. QStandardItem(const QString &text)
  4. QStandardItem()
  5. virtual ~QStandardItem()
  6. virtual QStandardItem * clone() const

属性

  1. virtual int type() const
  2. QBrush background() const
  3. void setBackground(const QBrush &brush)
  4. QBrush foreground() const
  5. void setForeground(const QBrush &brush)
  6. QFont font() const
  7. void setFont(const QFont &font)
  8. QIcon icon() const
  9. void setIcon(const QIcon &icon)
  10. QSize sizeHint() const
  11. void setSizeHint(const QSize &size)
  12. QString text() const
  13. void setText(const QString &text)
  14. QString statusTip() const
  15. void setStatusTip(const QString &statusTip)
  16. Qt::Alignment textAlignment() const
  17. void setTextAlignment(Qt::Alignment alignment)
  18. QString toolTip() const
  19. void setToolTip(const QString &toolTip)
  20. QString whatsThis() const
  21. void setWhatsThis(const QString &whatsThis)
  22. QString accessibleDescription() const
  23. void setAccessibleDescription(const QString &accessibleDescription)
  24. QString accessibleText() const
  25. void setAccessibleText(const QString &accessibleText)

修改Item

  1. void appendColumn(const QList<QStandardItem *> &items)
  2. void insertColumn(int column, const QList<QStandardItem *> &items)
  3. void removeColumn(int column)
  4. QList<QStandardItem *> takeColumn(int column)
  5. void insertColumns(int column, int count)
  6. void removeColumns(int column, int count)
  7. void appendRow(const QList<QStandardItem *> &items)
  8. void appendRow(QStandardItem *item)
  9. void insertRow(int row, const QList<QStandardItem *> &items)
  10. void insertRow(int row, QStandardItem *item)
  11. void removeRow(int row)
  12. QList<QStandardItem *> takeRow(int row)
  13. void appendRows(const QList<QStandardItem *> &items)
  14. void insertRows(int row, const QList<QStandardItem *> &items)
  15. void insertRows(int row, int count)
  16. void removeRows(int row, int count)

项目状态

  1. Qt::CheckState checkState() const
  2. void setCheckState(Qt::CheckState state)
  3. bool isCheckable() const
  4. void setCheckable(bool checkable)
  5. bool isAutoTristate() const
  6. void setAutoTristate(bool tristate)
  7. bool isUserTristate() const
  8. void setUserTristate(bool tristate)

项目之间的关系

  1. QStandardItem * child(int row, int column = 0) const
  2. void setChild(int row, int column, QStandardItem *item)
  3. void setChild(int row, QStandardItem *item)
  4. QStandardItem * takeChild(int row, int column = 0)
  5. QStandardItem * parent() const
  6. bool hasChildren() const

数据

  1. void clearData()
  2. virtual QVariant data(int role = Qt::UserRole + 1) const
  3. virtual void setData(const QVariant &value, int role = Qt::UserRole + 1)

行列

  1. int column() const
  2. int row() const
  3. int columnCount() const
  4. void setColumnCount(int columns)
  5. int rowCount() const
  6. void setRowCount(int rows)

模型和索引

  1. QModelIndex index() const
  2. QStandardItemModel * model() const

项目属性标志

  1. Qt::ItemFlags flags() const
  2. void setFlags(Qt::ItemFlags flags)
  3. bool isDragEnabled() const
  4. void setDragEnabled(bool dragEnabled)
  5. bool isDropEnabled() const
  6. void setDropEnabled(bool dropEnabled)
  7. bool isEditable() const
  8. void setEditable(bool editable)
  9. bool isEnabled() const
  10. void setEnabled(bool enabled)
  11. bool isSelectable() const
  12. void setSelectable(bool selectable)

读写

  1. virtual void read(QDataStream &in)
  2. virtual void write(QDataStream &out) const

排序

  1. void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder)
  2. virtual bool operator<(const QStandardItem &other) const

受保护的函数

  1. QStandardItem(const QStandardItem &other)
  2. QStandardItem & operator=(const QStandardItem &other)
  3. void emitDataChanged()

相关的非成员

  1. QDataStream & operator<<(QDataStream &out, const QStandardItem &item)
  2. QDataStream & operator>>(QDataStream &in, QStandardItem &item)

和数据序列化相关

参见

  • QStandardItemModel
  • 项目视图便利类 Item View Convenience Classes
  • 模型/视图编程 Model/View Programming
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值