DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DA::DAGraphicsResizeableItem类 参考abstract

用于调整大小的item 更多...

#include <DAGraphicsResizeableItem.h>

类 DA::DAGraphicsResizeableItem 继承关系图:
DA::DAGraphicsItem DA::DAXMLFileInterface DA::DAAbstractNodeGraphicsItem DA::DAGraphicsPixmapItem DA::DAGraphicsRectItem DA::DAGraphicsTextItem DA::DAStandardNodeInputOutputGraphicsItem DA::DAStandardNodePixmapGraphicsItem DA::DAStandardNodeRectGraphicsItem DA::DAStandardNodeSvgGraphicsItem DA::DAStandardNodeTextGraphicsItem DA::DAStandardNodeWidgetGraphicsItem DA::DAStandardNodeConstValueGraphicsItem

class  PrivateData
 

Public 类型

enum  ControlType {
  NotUnderAnyControlType = 0 , ControlPointTopLeft , ControlPointTopMid , ControlPointTopRight ,
  ControlPointRightMid , ControlPointBottomRight , ControlPointBottomMid , ControlPointBottomLeft ,
  ControlPointLeftMid , ControlLineLeft , ControlLineTop , ControlLineRight ,
  ControlLineBottom
}
 表征控制点和控制线的类型 更多...
 
enum  { Type = DA::ItemType_DAGraphicsResizeableItem }
 适用qgraphicsitem_cast
 
- Public 类型 继承自 DA::DAGraphicsItem
enum  { Type = DA::ItemType_DAGraphicsItem }
 

信号

void itemBodySizeChanged (const QSizeF &oldsize, const QSizeF &newsize)
 itemBodySizeChanged
 

Public 成员函数

 DAGraphicsResizeableItem (QGraphicsItem *parent=nullptr)
 
int type () const override
 
QRectF boundingRect () const override
 DAGraphicsResizeableItem的boundingRect会根据getSize尺寸进行计算
 
QPainterPath shape () const override
 用户不要继承此shape函数,而是继承bodyShape函数
 
void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
 用户不要继承此paint函数,而是继承paintBody函数
 
virtual bool saveToXml (QDomDocument *doc, QDomElement *parentElement, const QVersionNumber &ver) const override
 保存到xml中
 
virtual bool loadFromXml (const QDomElement *itemElement, const QVersionNumber &ver) override
 从xml中加载
 
QSizeF testBodySize (const QSizeF &s)
 测试一下setBodySize之后getBodySize能得到的尺寸
 
virtual void setBodySize (const QSizeF &s)
 设置尺寸
 
QRectF getBodyRect () const
 绘图的区域
 
QSizeF getBodySize () const
 获取尺寸
 
QRectF getBodyControlRect () const
 获取body包含控制窗口大小,就是在改变尺寸时包含那8个控制点的最大尺寸
 
void setBodyMinimumSize (const QSizeF &s)
 设置最小尺寸
 
void setBodyMaximumSize (const QSizeF &s)
 设置最大尺寸
 
QSizeF getBodyMinimumSize () const
 获取最小尺寸
 
QSizeF getBodyMaximumSize () const
 获取最大尺寸
 
void setControlerSize (const QSizeF &s)
 获取控制器的大小
 
QSizeF getControlerSize () const
 
void setEnableResize (bool on)
 设置是否Delegate可用
 
bool isResizable () const
 判断是否允许
 
void setBodyPos (const QPointF &p)
 对setPos的封装
 
void setBodyScenePos (const QPointF &p)
 
QPointF getBodyCenterPoint () const
 返回body的中心点,此坐标系为item坐标系
 
QPointF getBodyCenterPos () const
 获取body中心的位置
 
void setBodyCenterPos (const QPointF &p)
 setBodyCenterPos
 
void setAutoCenterTransformOriginPoint (bool on=true)
 设置TransformOriginPoint自动设置为bodysize的中心,否则为用户自己指定
 
void updateTransformOriginPoint ()
 更新TransformOriginPoint
 
QPair< QPointF, QSizeF > doItemResize (const QPointF &mousescenePos)
 执行尺寸的改变
 
virtual QPainterPath getBodyShape () const
 获取绘图的shape
 
virtual void paintSelectedBorder (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 绘制resize边框
 
virtual void paintResizeControlPoints (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 绘制resize控制点
 
virtual void paintBackground (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget, const QRectF &bodyRect)
 绘制背景
 
virtual void paintBorder (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget, const QRectF &bodyRect)
 绘制边框
 
virtual void paintBody (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget, const QRectF &bodyRect)=0
 
virtual QRectF controlPointRect (ControlType tp, const QRectF &bodyRect) const
 生成control points
 
virtual QSizeF controlPointSize () const
 控制点的大小
 
void prepareControlInfoChange ()
 在尺寸发生变化后调用,刷新控制点的位置
 
ControlType getControlPointByPos (const QPointF &pos) const
 测试位置是否在控制点上,如果是返回控制点的类型,如果不在返回NotAtControlPoint
 
bool isResizing () const
 判断当前是否处于调整大小的状态中
 
bool isSnapToGrid () const
 是否允许对齐网格
 
QSize getGridSize () const
 获取网格尺寸
 
- Public 成员函数 继承自 DA::DAGraphicsItem
 DAGraphicsItem (QGraphicsItem *parent=nullptr)
 
void setBorderPen (const QPen &p)
 设置边框画笔
 
QPen getBorderPen () const
 获取当前边框画笔
 
void setShowBorder (bool on)
 设置显示边框
 
bool isShowBorder () const
 是否显示边框
 
void setSelectable (bool on=true)
 设置是否可选中
 
bool isSelectable () const
 判断可否被选中
 
void setMovable (bool on=true)
 设置为是否可移动
 
bool isMovable () const
 判断是否可以移动
 
void setBackgroundBrush (const QBrush &b)
 设置背景
 
QBrush getBackgroundBrush () const
 获取背景
 
void enableShowBackground (bool on)
 设置显示背景
 
bool isShowBackground () const
 是否显示背景
 
virtual void groupPositionChanged (const QPointF &p)
 分组的位置发生了改变 此函数是在分组后才会回调,分组后,分组的移动对于item来说是不移动的,这时候无法触发ItemPositionChanged的改变,从而导致一些异常,因此需要分组告诉子对象分组移动了
 
void setScenePos (const QPointF &p)
 
void setScenePos (qreal x, qreal y)
 
uint64_t getItemID () const
 
void setItemID (uint64_t id)
 
bool isSceneReadOnly () const
 判断当前场景是否为只读模式,只读模式不允许操作
 

Protected 成员函数

void changeBodySize (const QSizeF &s)
 此函数和setBodySize不同,setBodySize是虚函数,且会校验尺寸的最大最小范围,此函数不进行校验
 
virtual void hoverEnterEvent (QGraphicsSceneHoverEvent *event) override
 
virtual void hoverMoveEvent (QGraphicsSceneHoverEvent *event) override
 
virtual void hoverLeaveEvent (QGraphicsSceneHoverEvent *event) override
 
virtual void mousePressEvent (QGraphicsSceneMouseEvent *event) override
 
virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override
 
virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event) override
 
QVariant itemChange (QGraphicsItem::GraphicsItemChange change, const QVariant &value) override
 DAGraphicsResizeableItem::itemChange
 
- Protected 成员函数 继承自 DA::DAGraphicsItem
DAGraphicsScenedaScene () const
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 DA::DAGraphicsItem
static DAGraphicsItemcast (QGraphicsItem *i)
 dynamic_cast为DAGraphicsItem
 
- 静态 Public 成员函数 继承自 DA::DAXMLFileInterface
template<typename std_container_like >
static QDomElement makeElement (const std_container_like &v, const QString &tagName, QDomDocument *doc)
 生成一个文本
 
template<typename std_container_like >
static bool loadElement (std_container_like &v, const QDomElement *ele)
 加载文本
 
static QDomElement makeSysInfoElement (const QString &tagName, QDomDocument *doc)
 
static void appendElementWithText (QDomElement &parent, const QString &tagName, const QString &text, QDomDocument *doc)
 在parent下,插入一个tag,tag下包含文字text
 

详细描述

用于调整大小的item

TODO:DAGraphicsResizeableItem改为DAGraphicsResizeOverlayItem

成员枚举类型说明

◆ ControlType

表征控制点和控制线的类型

枚举值
NotUnderAnyControlType 

不在控制点上

ControlPointTopLeft 

左上控制点

ControlPointTopMid 

顶部中间控制点

ControlPointTopRight 

右上控制点

ControlPointRightMid 

右边中间控制点

ControlPointBottomRight 

右下控制点

ControlPointBottomMid 

底部中间控制点

ControlPointBottomLeft 

左下控制点

ControlPointLeftMid 

左面中间控制点

ControlLineLeft 

左边控制线

ControlLineTop 

顶部控制线

ControlLineRight 

右边控制线

ControlLineBottom 

底部控制线

成员函数说明

◆ boundingRect()

QRectF DA::DAGraphicsResizeableItem::boundingRect ( ) const
override

DAGraphicsResizeableItem的boundingRect会根据getSize尺寸进行计算

返回

◆ changeBodySize()

void DA::DAGraphicsResizeableItem::changeBodySize ( const QSizeF &  s)
protected

此函数和setBodySize不同,setBodySize是虚函数,且会校验尺寸的最大最小范围,此函数不进行校验

此函数适合继承的类在构造函数中调用,应为理论上构造函数不应该调用虚函数

参数
s

◆ controlPointRect()

QRectF DA::DAGraphicsResizeableItem::controlPointRect ( ControlType  tp,
const QRectF &  bodyRect 
) const
virtual

生成control points

参数
tp
返回

◆ controlPointSize()

QSizeF DA::DAGraphicsResizeableItem::controlPointSize ( ) const
virtual

控制点的大小

返回

◆ doItemResize()

QPair< QPointF, QSizeF > DA::DAGraphicsResizeableItem::doItemResize ( const QPointF &  mousescenePos)

执行尺寸的改变

参数
mousescenePos
返回
返回<位移,尺寸>,如果为null,则不执行

◆ getBodyCenterPoint()

QPointF DA::DAGraphicsResizeableItem::getBodyCenterPoint ( ) const

返回body的中心点,此坐标系为item坐标系

返回
item坐标系
参见
getBodyCenterPosition

◆ getBodyCenterPos()

QPointF DA::DAGraphicsResizeableItem::getBodyCenterPos ( ) const

获取body中心的位置

返回
scene坐标系
参见
getBodyCenterPoint

◆ getBodyControlRect()

QRectF DA::DAGraphicsResizeableItem::getBodyControlRect ( ) const

获取body包含控制窗口大小,就是在改变尺寸时包含那8个控制点的最大尺寸

返回

◆ getBodyRect()

QRectF DA::DAGraphicsResizeableItem::getBodyRect ( ) const

绘图的区域

返回

◆ getBodyShape()

QPainterPath DA::DAGraphicsResizeableItem::getBodyShape ( ) const
virtual

获取绘图的shape

返回

◆ getBodySize()

QSizeF DA::DAGraphicsResizeableItem::getBodySize ( ) const

获取尺寸

返回

◆ getControlPointByPos()

DAGraphicsResizeableItem::ControlType DA::DAGraphicsResizeableItem::getControlPointByPos ( const QPointF &  pos) const

测试位置是否在控制点上,如果是返回控制点的类型,如果不在返回NotAtControlPoint

参数
pos
返回

◆ getGridSize()

QSize DA::DAGraphicsResizeableItem::getGridSize ( ) const

获取网格尺寸

返回

◆ isResizable()

bool DA::DAGraphicsResizeableItem::isResizable ( ) const

判断是否允许

返回

◆ isResizing()

bool DA::DAGraphicsResizeableItem::isResizing ( ) const

判断当前是否处于调整大小的状态中

返回
如果当前在调整大小,返回true

◆ isSnapToGrid()

bool DA::DAGraphicsResizeableItem::isSnapToGrid ( ) const

是否允许对齐网格

返回

◆ itemBodySizeChanged

void DA::DAGraphicsResizeableItem::itemBodySizeChanged ( const QSizeF &  oldsize,
const QSizeF &  newsize 
)
signal

itemBodySizeChanged

参数
oldsize
newsize

◆ itemChange()

QVariant DA::DAGraphicsResizeableItem::itemChange ( QGraphicsItem::GraphicsItemChange  change,
const QVariant &  value 
)
overrideprotectedvirtual

◆ loadFromXml()

bool DA::DAGraphicsResizeableItem::loadFromXml ( const QDomElement *  parentElement,
const QVersionNumber &  ver 
)
overridevirtual

◆ mousePressEvent()

void DA::DAGraphicsResizeableItem::mousePressEvent ( QGraphicsSceneMouseEvent *  event)
overrideprotectedvirtual

◆ paint()

void DA::DAGraphicsResizeableItem::paint ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget 
)
override

用户不要继承此paint函数,而是继承paintBody函数

几个虚函数的绘制顺序:

参数
painter
option
widget

◆ paintBackground()

void DA::DAGraphicsResizeableItem::paintBackground ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget,
const QRectF &  bodyRect 
)
virtual

绘制背景

参数
painter
option
widget
bodyRect

◆ paintBody()

virtual void DA::DAGraphicsResizeableItem::paintBody ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget,
const QRectF &  bodyRect 
)
pure virtual

◆ paintBorder()

void DA::DAGraphicsResizeableItem::paintBorder ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget,
const QRectF &  bodyRect 
)
virtual

绘制边框

参数
painter
option
widget
bodyRectbody的尺寸

◆ paintResizeControlPoints()

void DA::DAGraphicsResizeableItem::paintResizeControlPoints ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget 
)
virtual

绘制resize控制点

参数
painter
option
widget
bodyRect

◆ paintSelectedBorder()

void DA::DAGraphicsResizeableItem::paintSelectedBorder ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget 
)
virtual

绘制resize边框

参数
painter
option
widget

◆ saveToXml()

bool DA::DAGraphicsResizeableItem::saveToXml ( QDomDocument *  doc,
QDomElement *  parentElement,
const QVersionNumber &  ver 
) const
overridevirtual

◆ setAutoCenterTransformOriginPoint()

void DA::DAGraphicsResizeableItem::setAutoCenterTransformOriginPoint ( bool  on = true)

设置TransformOriginPoint自动设置为bodysize的中心,否则为用户自己指定

参数
on

◆ setBodyCenterPos()

void DA::DAGraphicsResizeableItem::setBodyCenterPos ( const QPointF &  p)

setBodyCenterPos

参数
pscene的点

◆ setBodyMaximumSize()

void DA::DAGraphicsResizeableItem::setBodyMaximumSize ( const QSizeF &  s)

设置最大尺寸

参数
s

◆ setBodyMinimumSize()

void DA::DAGraphicsResizeableItem::setBodyMinimumSize ( const QSizeF &  s)

设置最小尺寸

参数
s

◆ setBodyPos()

void DA::DAGraphicsResizeableItem::setBodyPos ( const QPointF &  p)

对setPos的封装

参数
p

◆ setBodySize()

void DA::DAGraphicsResizeableItem::setBodySize ( const QSizeF &  s)
virtual

设置尺寸

注解
setBodySize是虚函数,在scene鼠标动作的时候会触发此函数, 如果仅仅想改变bodysize的尺寸,可以调用
参见
changeBodySize
参数
s

DA::DAStandardNodeWidgetGraphicsItem, DA::DAGraphicsPixmapItem, DA::DAGraphicsTextItem, DA::DAAbstractNodeGraphicsItem, DA::DAStandardNodePixmapGraphicsItem, DA::DAStandardNodeSvgGraphicsItem , 以及 DA::DAStandardNodeTextGraphicsItem 重载.

◆ setControlerSize()

void DA::DAGraphicsResizeableItem::setControlerSize ( const QSizeF &  s)

获取控制器的大小

参数
s

◆ setEnableResize()

void DA::DAGraphicsResizeableItem::setEnableResize ( bool  on)

设置是否Delegate可用

参数
on

◆ shape()

QPainterPath DA::DAGraphicsResizeableItem::shape ( ) const
override

用户不要继承此shape函数,而是继承bodyShape函数

返回

◆ testBodySize()

QSizeF DA::DAGraphicsResizeableItem::testBodySize ( const QSizeF &  s)

测试一下setBodySize之后getBodySize能得到的尺寸

参数
s
返回

◆ type()

int DA::DAGraphicsResizeableItem::type ( ) const
inlineoverridevirtual

该类的文档由以下文件生成: