日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QGraphicsItem

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QGraphicsItem 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Public Types

enum QGraphicsItem::CacheMode

QGraphicsItem::NoCache
禁用緩存

QGraphicsItem::ItemCoordinateCache

緩存能夠用于元素的邏輯坐標系統,QGraphicsItem用一個可配置的大小/解決方案建立了屏幕以外的像素緩沖區,追求質量會典型地降低,取決于緩沖的分辨率和元素變換,可以調用setCacheMode()再次調整緩存的分辨率


QGraphicsItem::DeviceCoordinateCache
緩存能夠用于設備的邏輯坐標系統,這種模式可以移動元素,但不可以旋轉,縮放或剪切,總是顯示最好的畫質


enum QGraphicsItem::GraphicsItemChange

QGraphicsItem::ItemEnabledChange
項目啟用狀態更改,可以從itemChanged()返回新的狀態

QGraphicsItem::ItemEnabledHasChanged
項目啟用狀態更改,itemChange將忽略該返回值

QGraphicsItem::ItemMatrixChange
項目矩陣旋轉

QGraphicsItem::ItemPositionChange
項目位置變化,如果是ItemSendsGeometryChanges發送,可以調用pos()得到原來的位置,
調用itemChange()后QGraphicsItem將會立即發送ItemPositionHasChanged,得到變化后的位置

QGraphicsItem::ItemPositionHasChanged
項目位置發生變化,pos()獲得當前位置,QGraphicsItem忽略該消息的返回值

QGraphicsItem::ItemTransformChange
項目變換矩陣變化,如果是ItemSendsGeometryChanges發送,transform返回以前的矩陣,可以從ItemChange獲得變換后的矩陣,如果更改了轉換屬性,該信號將不會發送

QGraphicsItem::ItemTransformHasChanged
項目變換矩陣變化,可能是setTransform或轉換特性的改變,如果是ItemSendsGeometryChanges發送,transform和QGraphicsItem忽略該消息的返回值

QGraphicsItem::ItemRotationChange
項目旋轉屬性更改,如果是ItemSendsGeometryChanges發送,rotation返回以前的旋轉,從itemChange得到新的矩陣

QGraphicsItem::ItemRotationHasChanged
項目旋轉屬性更改,如果是ItemSendsGeometryChanges發送,QGraphicsItem將忽略該消息的返回值

QGraphicsItem::ItemScaleChange
項目比例發生變化,scale獲得以前的比例,itemChange返回當前尺寸

QGraphicsItem::ItemScaleHasChanged
項目比例發生變化,如果是ItemSendsGeometryChanges發送,QGraphicsItem將忽略該消息的返回值

QGraphicsItem::ItemTransformOriginPointChange
項目變換原點坐標改變,如果是ItemSendsGeometryChanges發送,transformOriginPoint獲得以前的坐標,itemChange獲得當前坐標

QGraphicsItem::ItemTransformOriginPointHasChanged
項目變換原點坐標改變,如果是ItemSendsGeometryChanges發送,QGraphicsItem將忽略該消息的返回值

QGraphicsItem::ItemSelectedChange

項目選定狀態改變,如果該項目當前是選定的,它將會選擇。 itemChange返回新的選中狀態


QGraphicsItem::ItemSelectedHasChanged
項目選定狀態改變,itemChange忽略返回值

QGraphicsItem::ItemVisibleChange
項目可見狀態改變,itemChage返回新的可見狀態


QGraphicsItem::ItemVisibleHasChanged
項目可見狀態改變,itemChange忽略返回值


QGraphicsItem::ItemParentChange
項目父項改變,itemChage返回新的可見狀態


QGraphicsItem::ItemParentHasChanged
項目父項改變,itemChange忽略返回值

QGraphicsItem::ItemChildAddedChange
添加了一個子項,返回值未使用,新的子項可能無法完全構造,純虛函數會導致崩潰

QGraphicsItem::ItemChildRemovedChange
移除一個子項,返回值未使用

QGraphicsItem::ItemSceneChange
項目被移動到新的場景,當該項目被刪除時scene是老場景或者一個空指針,itemChange返回新場景

QGraphicsItem::ItemSceneHasChanged
項目被移動到新的場景,返回值被忽略

QGraphicsItem::ItemCursorChange
項目光標改變,itemChange返回新光標

QGraphicsItem::ItemCursorHasChanged
項目光標改變,返回值被忽略

QGraphicsItem::ItemToolTipChange
項目提示改變,itemChange返回新提示

QGraphicsItem::ItemToolTipHasChanged
項目提示改變,返回值被忽略

QGraphicsItem::ItemFlagsChange
項目焦點改變,itemChange返回新焦點

QGraphicsItem::ItemFlagsHaveChanged
項目焦點改變,返回值被忽略

QGraphicsItem::ItemZValueChange
項目Z值改變,itemChange返回新Z值

QGraphicsItem::ItemZValueHasChanged
項目Z值改變,返回值被忽略

QGraphicsItem::ItemOpacityChange
項目透明度改變,itemChange返回透明度

QGraphicsItem::ItemOpacityHasChanged
項目透明度改變,返回值被忽略

QGraphicsItem::ItemScenePositionHasChanged
項目場景位置發生變化,如果是ItemSendsScenePositionChanges發出,QGraphicsItem忽略該消息的返回值



enum QGraphicsItem::GraphicsItemFlag

QGraphicsItem::ItemIsMovable
項目可以通過點擊和拖動移動(遞歸子項)

QGraphicsItem::ItemIsSelectable
項目可以通過點擊,框選拖動或者在QGraphicsScene::setSelectionArea()調用所影響的區域內被選中

QGraphicsItem::ItemIsFocusable
項目支持鍵盤按下事件

QGraphicsItem::ItemClipsToShape
按自己的形狀剪切,不管如何繪制,也不能接收在它形狀之外的事件

QGraphicsItem::ItemClipsChildrenToShape
項目按照自己的形狀剪切它的所有子項,【遞歸】

QGraphicsItem::ItemIgnoresTransformations
忽略應用到它的父項的變換(位置與父項關聯)

QGraphicsItem::ItemIgnoresParentOpacity
忽略父項透明度

QGraphicsItem::ItemDoesntPropagateOpacityToChildren
透明度不影響子項

QGraphicsItem::ItemStacksBehindParent
堆疊到父項后面

QGraphicsItem::ItemUsesExtendedStyleOption
為項提供額外的QStyleOptionGraphicsItem屬性

QGraphicsItem::ItemHasNoContents
項目不繪制任何內容

QGraphicsItem::ItemSendsGeometryChanges
項目位置或變換發生改變時調用itemChange

QGraphicsItem::ItemAcceptsInputMethod
項目接受輸入法

QGraphicsItem::ItemNegativeZStacksBehindParent
如果Z值是負的,自動放在父項后方

QGraphicsItem::ItemIsPanel
該項目是一個面板,提供了激活和焦點處理,只有一個面板可以處于活動狀態

QGraphicsItem::ItemSendsScenePositionChanges
項目在位置變化發生時調用itemChange()

QGraphicsItem::ItemContainsChildrenInShape
顯示所有項目的直接或間接的子項只在項目的形狀中繪制,默認情況下禁用


enum QGraphicsItem::PanelModality


QGraphicsItem::NonModal
該面板是不是模態,并不會阻止輸入到其他面板。這是面板的默認值。

QGraphicsItem::PanelModal
面板模型?

QGraphicsItem::SceneModal

窗口是模態的,整個場景和塊輸入到所有面板。


public Functions


boundingRect() const = 0

這是個純虛函數,定義了邊界矩形尺寸


paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) = 0
這是個純虛函數,指定了在邊界矩形內如何繪畫

class SimpleItem : public QGraphicsItem { public:QRectF boundingRect() const{qreal penWidth = 1;return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,20 + penWidth, 20 + penWidth);}void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget){painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);} };

boundingRegion(const QTransform &itemToDeviceTransform) const
返回該item的輪廓區域,返回的區域的坐標系統依賴于參數itemToDeviceTransform
如果你傳遞一個Qtransform對象作為參數,那么函數將返回本地坐標系統區域
返回的區域是item內容可見的一個大概的輪廓,盡管計算起來很浪費空間和時間
但是比boundingRect()更精準,而且當重繪時候,它還能避免不必要的重繪
對像線或者簡單的多邊形來說非常有效

childItems() const
返回孩子item的一個鏈表,這些items按照棧順序排列,考慮了item的插入順序和Z-values

childrenBoundingRect() const
返回這個item的所有子孫items的本地坐標系統輪廓矩形。這個矩形包括了這個item所有的子孫item,如果這個item不含有子孫item,這個函數將返回一個空的矩形。

clearFocus()
去除item的光標,如果原來有光標焦點,當焦點失去時候,事件focus out event會發送給這個item,提示他將會失去焦點。

clipPath() const
返回此項目的裁剪路徑

collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
如果這個item和另一個item碰撞就返回真,mode是應用于其他item的,默認是Qt::IntersectsItemShape,如果其他的item和這個item相互影響或者包含,被包含于這個item的形狀(詳見Qt::ItemSelectionMode)
默認的函數是基于外形相互影響,它調用兩個item的shape()函數,這將會花費很大時間,你可以在QgraphicsItem子類中重寫這個函數,提供一個簡單的算法。這樣你可以使用自己item的一些參數,這樣可以提高碰撞偵測的效果。例如,兩個完全沒有轉換的圓item的碰撞可以通過對比他們的圓心位置和半徑

collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
如果item按照path碰撞就返回真

collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
返回碰撞列表,碰撞模式取決于mode

commonAncestorItem(const QGraphicsItem *other) const
返回item最近的祖先item,如果other為0,或者沒有祖先item,就返回0

contains(const QPointF &point) const
如果item包含了點point就返回TRUE,否則返回FALSE,最常用的是在QgraphicsView中調用,來判斷這個item是否在光標下面,如果要重寫這個函數,那就盡可能的簡單。默認的這個函數調用的shape()函數

deviceTransform(const QTransform &viewportTransform) const
返回item設備的轉換矩陣,使用viewportTransform來從場景到設備影射坐標,這個矩陣可以用來從這個item本地坐標到視圖口坐標系統映射坐標或者幾何圖形,如果要映射視圖口坐標到本地坐標,首先應該轉換返回的這個矩陣。

effectiveOpacity() const
返回item的有效透明度,這個數值在0.0~~1.0之間

ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
如果項目是場景,項目將會檢查鼠標是否處在可見區域的外面并且根據檢查的結果移動滾動文本區域

focusItem() const
如果子項具有獲得焦點,將返回該項指針,否則返回0

grabKeyboard()
項目接收鍵盤事件,直到該項目不可見,從場景移除或刪除該項

grabMouse()
項目接收鼠標事件,直到該項目不可見,從場景移除或刪除該項

hasCursor() const
如果該項有一個光標設置返回真,否則為假,默認為假,cursor()返回標準的箭頭光標

hasFocus() const
項目是活動的,返回真,否則為假

hide()
隱藏項目

installSceneEventFilter(QGraphicsItem *filterItem)
安裝場景事件過濾器

isAncestorOf(const QGraphicsItem *child) const
如果項目有子項,返回真

isBlockedByModalPanel(QGraphicsItem **blockingPanel = Q_NULLPTR) const
如果項目被模態窗口阻擋,返回真

isClipped() const
如果項目被裁剪,返回真

isObscured(const QRectF &rect = QRectF()) const
如果被任何碰撞項上面的不透明的形狀完全遮蔽該項,返回true

isObscuredBy(const QGraphicsItem *item) const
如果這個項目的包圍矩形被項目的不透明的形狀完全遮蔽,返回true

isPanel() const
如果項目是一個面板,返回真

isUnderMouse() const
如果光標在項目上,返回真

isVisibleTo(const QGraphicsItem *parent) const
如果項目是可見的,返回真

isWidget() const
如果項目是控件,返回真

isWindow() const
如果項目是QGraphicsWidget,返回真

itemTransform(const QGraphicsItem *other, bool *ok = Q_NULLPTR) const
返回QTarnsForm式地圖坐標

mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
項目坐標轉換,返回映射的坐標,如果item是0,那么返回和mapFromScene()一樣

mapFromParent(qreal x, qreal y, qreal w, qreal h) const
這是個父坐標系統轉換,返回映射的坐標

mapFromScene(qreal x, qreal y, qreal w, qreal h) const
轉換為場景坐標系統,返回映射的坐標

mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
轉換為項目矩形坐標,返回映射的矩形

mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
轉換為父項目坐標系統,返回映射的矩形

mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
轉換為場景坐標,返回映射的矩形

mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
轉換為項目矩形坐標,返回映射的矩形,如果項目是0,這個函數返回的是mapFromScene()相同

mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
轉換為父項目坐標系統,返回映射的矩形

mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
轉換為場景坐標,返回映射的矩形

mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
轉換為項目坐標,返回映射的坐標

mapToParent(qreal x, qreal y, qreal w, qreal h) const
轉換為父項坐標,返回映射的坐標

mapToScene(qreal x, qreal y, qreal w, qreal h) const
轉換為場景坐標,返回映射的坐標

moveBy(qreal dx, qreal dy)
相對移動

opaqueArea() const
返回不透明形狀區域,默認將返回一個空QPainterPath

panel() const
如果該項是面板,返回自身,否則如果父項是面板將返回父項,否則返回0

parentObject() const
如果父項不是QGraphicsObject,返回0,否則返回父項

parentWidget() const
返回父項控件

removeSceneEventFilter(QGraphicsItem *filterItem)
移除場景事件過濾器

resetTransform()
重置變換矩陣

rotation() const
返回順時針旋轉角度

scene() const
返回項目的當前場景

sceneBoundingRect() const
返回項目的場景的矩形

scenePos() const
返回項目在場景的位置

sceneTransform() const
返回這個項目的場景轉換矩陣

scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
滾動項目,滾動比重繪快

setAcceptDrops(bool on)
設置接受拖放

setAcceptHoverEvents(bool enabled)
設置接受懸停事件

setAcceptTouchEvents(bool enabled)
設置接受觸摸事件

setAcceptedMouseButtons(Qt::MouseButtons buttons)
設置該項目接受鼠標事件的鼠標按鈕

setActive(bool active)
設置項目是否活動

setBoundingRegionGranularity(qreal granularity)
調節輪廓區域的粒度,默認的粒度是0,這時候item的區域和輪廓矩形一樣的

setCacheMode(CacheMode mode, const QSize &logicalCacheSize = QSize())
設置緩存模式

setCursor(const QCursor &cursor)
設置光標形狀

setData(int key, const QVariant &value)
設置自定義數據

setEnabled(bool enabled)
設置啟用項目

setFiltersChildEvents(bool enabled)
設置過濾子項事件

setFlag(GraphicsItemFlag flag, bool enabled = true)
設置標志

setFlags(GraphicsItemFlags flags)
設置所有標志

setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
設置焦點

setFocusProxy(QGraphicsItem *item)
將該項目設置為焦點代理

setGraphicsEffect(QGraphicsEffect *effect)
設置效果

setGroup(QGraphicsItemGroup *group)
設置項目組

setInputMethodHints(Qt::InputMethodHints hints)
設置此項當前輸入方法提示

setOpacity(qreal opacity)
設置不透明度

setPanelModality(PanelModality panelModality)
設置面板模式

setParentItem(QGraphicsItem *newParent)
設置父項

setPos(const QPointF &pos)
設置位置

setRotation(qreal angle)
設置旋轉角度

setScale(qreal factor)
設置場景

setSelected(bool selected)
設置選擇

setToolTip(const QString &toolTip)
設置提示

setTransform(const QTransform &matrix, bool combine = false)
設置變換

setTransformOriginPoint(qreal x, qreal y)
設置變換原點

setTransformations(const QList<QGraphicsTransform *> &transformations)
設置旋轉列表

setVisible(bool visible)
設置可見

setX(qreal x)
setY(qreal y)
設置坐標

setZValue(qreal z)
設置Z值

shape() const
返回形狀,用于碰撞檢測,命中測試等,默認返回矩形

show()
顯示

stackBefore(const QGraphicsItem *sibling)
堆疊兄弟項目,項目必須是兄弟項

toGraphicsObject() const
返回轉換為QGraphicsObject,如果本來是圖像對象,返回0


topLevelItem() const
返回頂級項目,如果沒有父項,返回自己

topLevelWidget() const
返回一個指向該項目的頂級控件,如果祖先不是控件,返回0,如果沒有頂級控件,返回自己

type() const
返回類型

ungrabKeyboard()
釋放鍵盤事件

ungrabMouse()
釋放鼠標事件

unsetCursor()
從項目中清楚光標

update(const QRectF &rect = QRectF())
更新

window() const
返回項目的窗口,或0


Static Public Members

Type
重載設置項目類型

UserType

最低項目類型值


Protected Functions


contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
上下文菜單事件

dragEnterEvent(QGraphicsSceneDragDropEvent *event)
拖拽輸入事件

dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
拖拽離開事件


dragMoveEvent(QGraphicsSceneDragDropEvent *event)
拖拽移動事件

dropEvent(QGraphicsSceneDragDropEvent *event)
拖拽事件

focusInEvent(QFocusEvent *event)
焦點事件

focusOutEvent(QFocusEvent *event)
取消焦點事件

hoverEnterEvent(QGraphicsSceneHoverEvent *event)
懸停進入事件

hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
懸停離開事件

hoverMoveEvent(QGraphicsSceneHoverEvent *event)
懸停移動事件

inputMethodEvent(QInputMethodEvent *event)
輸入法事件

inputMethodQuery(Qt::InputMethodQuery query) const
輸入法查詢事件

itemChange(GraphicsItemChange change, const QVariant &value)
項目改變

keyPressEvent(QKeyEvent *event)
按下按鍵

keyReleaseEvent(QKeyEvent *event)
釋放按鍵

mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
雙擊事件

mouseMoveEvent(QGraphicsSceneMouseEvent *event)
鼠標移動事件


mousePressEvent(QGraphicsSceneMouseEvent *event)
鼠標單擊事件


mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
鼠標是否事件

prepareGeometryChange()
改變包圍矩形

sceneEvent(QEvent *event)
場景事件

sceneEventFilter(QGraphicsItem *watched, QEvent *event)
場景事件過濾

updateMicroFocus()
焦點更新

wheelEvent(QGraphicsSceneWheelEvent *event)
滾輪事件

qgraphicsitem_cast(QGraphicsItem *item)
返回給定項目類型





英語渣渣必有錯誤,如有發現,歡迎留言

總結

以上是生活随笔為你收集整理的QGraphicsItem的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。