图形视图(19):【类】QGraphicsLayoutItem[官翻]

QGraphicsLayoutItem 类

可以继承 QGraphicsLayoutItem 类,以允许您的自定义项目由布局管理。

Header:#include < QGraphicsLayoutItem >
qmake:QT += widgets
Inherits:
Inherited By:QGraphicsLayout ,QGraphicsWidget
Since:Qt 4.4

image-20210304150559246

详述

QGraphicsLayoutItem是一个抽象类,它定义了一组虚拟函数,用于描述由QGraphicsLayout安排的任何对象的大小、大小策略和大小提示。该API包含与项目本身和项目用户相关的函数,因为QGraphicsLayoutItem的大多数函数也是子类的公共API的一部分。

在大多数情况下,现有的支持布局的类(如QGraphicsWidget 和QGraphicsLayout)已经提供了所需的功能。然而,子类化这些类将使您能够创建与布局(QGraphicsWidget )或自定义布局(QGraphicsLayout)一起工作的图形元素。

子类化QGraphicsLayoutItem

如果您创建了QGraphicsLayoutItem的子类并重新实现其虚拟函数,那么您将使布局能够调整项目的大小和位置,以及其他QGraphicsLayoutItems,包括qgraphicwidget和QGraphicsLayout。

您可以首先重新实现一些重要的函数:受保护的sizeHint()函数,以及公共的setGeometry()函数。如果你想让你的项目知道几何图形的即时变化,你也可以重新实现updateGeometry()。

几何形状、大小提示和大小策略会影响项目的大小和位置。调用setGeometry()总是会立即调整该项的大小和重新定位。通常,该函数在布局激活后由QGraphicsLayout调用,但项目的用户也可以在任何时候调用该函数。

函数的作用是:返回条目的最小、首选和最大大小提示。你可以通过调用setMinimumSize(), setPreferredSize()或setMaximumSize()来覆盖这些属性。如果需要,你也可以使用setMinimumWidth()或setMaximumHeight()这样的函数来设置宽度或高度组件。

另一方面,effecvesizehint()函数为任何给定的Qt::SizeHint返回一个大小提示,并保证返回的大小绑定到最小和最大大小和大小提示。您可以通过调用setSizePolicy()来设置项目的垂直和水平大小策略。布局系统使用sizePolicy属性来描述该项喜欢如何增长或缩小。

嵌套QGraphicsLayout项

QGraphicsLayoutItems可以嵌套在其他QGraphicsLayoutItems中,类似于可以包含子布局的布局。 这可以通过将QGraphicsLayoutItem指针传递给QGraphicsLayoutItem的受保护构造函数来实现,也可以通过调用setParentLayoutItem() 来实现。 parentLayoutItem() 函数返回一个指向该项的layoutItem父级的指针。 如果项的父级为nullptr或父级不继承自QGraphicsItem,则parentLayoutItem() 函数将返回nullptr。 如果QGraphicsLayoutItem子类本身是布局,则isLayout() 返回true,否则返回false。

Qt使用QGraphicsLayoutItem在Graphics View Framework中提供布局功能,但是将来它的使用可能会遍及Qt本身。

另请参见QGraphicsWidget,QGraphicsLayout,QGraphicsLinearLayout和QGraphicsGridLayout。

公共函数

构造和析构

  1. QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false)
  2. virtual ~QGraphicsLayoutItem()

其它

  1. QRectF contentsRect() const
  2. virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
  3. QGraphicsItem * graphicsItem() const
  4. virtual void updateGeometry()

布局管理器

  1. bool isLayout() const
  2. bool ownedByLayout() const

大小

  1. QRectF geometry() const
    virtual void setGeometry(const QRectF &rect)

  2. QSizeF minimumSize() const
    void setMinimumSize(const QSizeF &size)
    void setMinimumSize(qreal w, qreal h)

  3. QSizeF maximumSize() const
    void setMaximumSize(const QSizeF &size)
    void setMaximumSize(qreal w, qreal h)

  4. qreal minimumHeight() const
    void setMinimumHeight(qreal height)

  5. qreal maximumHeight() const
    void setMaximumHeight(qreal height)

  6. qreal minimumWidth() const
    void setMinimumWidth(qreal width)

  7. qreal maximumWidth() const
    void setMaximumWidth(qreal width)

  8. QSizeF preferredSize() const
    void setPreferredSize(const QSizeF &size)
    void setPreferredSize(qreal w, qreal h)

  9. qreal preferredHeight() const
    void setPreferredHeight(qreal height)

  10. qreal preferredWidth() const
    void setPreferredWidth(qreal width)

  11. QSizePolicy sizePolicy() const
    void setSizePolicy(const QSizePolicy &policy)
    void setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType)

  12. QSizeF effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
    返回此QGraphicsLayoutItem的有效大小提示
    这就是问题中的大小提示。constraint是一个可选参数,它在计算有效大小提示时定义了一个特殊的约束。默认情况下,约束是QSizeF(-1, -1),这意味着对大小提示没有约束。

    如果希望为给定的宽度或高度指定小部件的大小提示,可以在constraint中提供固定的尺寸。这对于那些只能垂直或水平增长且需要将其宽度或高度设置为特定值的小部件非常有用。

    例如,适合列宽为200的文本段落项可以垂直增长。您可以通过QSizeF(200, -1)作为约束来获得合适的最小、首选和最大高度)。

    您可以通过在QGraphicsLayoutItem子类中重新实现sizeHint()来调整有效大小提示,或者调用以下函数之一:setMinimumSize()、setPreferredSize或setMaximumSize()(或两者的组合)。

    这个函数缓存每个大小提示,并保证sizeHint()对于每个值只被调用一次——除非没有指定约束并且调用了updateGeometry()。

层次关系

  1. QGraphicsLayoutItem * parentLayoutItem() const
  2. void setParentLayoutItem(QGraphicsLayoutItem *parent)

受保护的函数

  1. void setGraphicsItem(QGraphicsItem *item)
  2. void setOwnedByLayout(bool ownership)
  3. virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值