1. 程式人生 > >QGraphicsItem中子Item與父Item的訊息傳遞問題

QGraphicsItem中子Item與父Item的訊息傳遞問題

現在要做一個需要在父item上新增控制點(子item)來調整父item形狀的功能。

關鍵是子item移動之後,要把自己的位置資訊交給父item,讓父item更新自己的形狀。

查看了很久Qt的document,需要在父ITEM中用setFiltersChildEvents(true)來設定允許攔截所有給子item的訊息,然後再過載這個函式:

boolsceneEventFilter(QGraphicsItem*watched,QEvent*event)
{
if(watched->type()==QGraphicsRectItem::Type) //我的子item都是rect
{
if(event->type()==QEvent
::GraphicsSceneMouseMove)
{
//處理移動訊息
}
elseif(event->type()==QEvent::GraphicsSceneMouseRelease)
{
//處理滑鼠釋放訊息
}
}
returnfalse; //false的話子item的訊息仍然要被處理,如果返回true,子item的訊息將不再被處理
}

解決了這個問題。

過載時要注意判斷是否是自己想要攔截的item。

或者也可以使用

installSceneEventFilter 

來設定允許攔截某item的訊息,指定要過濾的item

相關推薦

QGraphicsItem中子ItemItem訊息傳遞問題

現在要做一個需要在父item上新增控制點(子item)來調整父item形狀的功能。 關鍵是子item移動之後,要把自己的位置資訊交給父item,讓父item更新自己的形狀。 查看了很久Qt的document,需要在父ITEM中用setFiltersChildEvents

MFC樹控制元件ItemItem的checkbox的聯動

首先為樹控制元件新增NM_CLICK訊息,然後在訊息響應函式加上下面程式碼即可 void CDlgFitleFile::OnClickTreeFiletype(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your co

Python 中子程序程序

from multiprocessing import Process import time 複製程式碼 從程式中啟動程序的兩種方式: def task(i): print('%s start!'% i) time.sleep(2) print('%s stop!' % i) 複

Java中子類的構造方法

子類與父類的構造方法有兩點原則: 1、子類的構造方法必須呼叫父類的構造方法(原因為什麼,可參考此連結https://blog.csdn.net/y_dzaichirou/article/details/54920715) 2、被子類呼叫的父類構造方法必須存在(這

Java中子類的構造方法的呼叫關係

        在 Java 中,無論是 explicit 還是 implicit 方式,都要求在子類的構造方法中呼叫其父類的構造方法。如果父類無構造方法(其實是一個預設無參的構造方法),那麼子類的構造方法中會自動進行呼叫;如果 父類有自己的構造方法(這時父類不會有預設無參的構造方法),那麼在子類的構造方法

js中子視窗視窗的互操作

    dialogHeight:對話方塊高度     dialogWidth: 對話方塊寬度。     dialogLeft: 距離桌面左的距離。     dialogTop: 離桌面上的距離。     center: 視窗是否居中,預設yes,取值範圍{yes | no | 1 | 0 }。     he

netty5客戶端伺服器端訊息傳遞

1.普通字串訊息傳遞伺服器端:public void startServer(int port) throws InterruptedException{EventLoopGroup work=new NioEventLoopGroup();EventLoopGroup bo

JAVA中子類相互轉換

子類轉換成父類:可以。 父類轉換成子類:不可以。 如果父類物件的引用指向的實際是一個子類的物件,那麼父類物件的引用可以強制轉化成子類物件的引用。如: Parent p=new Son() Son s=(Son)p;

ListView中ItemCheckable子類控件搶焦點問題

.com 控件 schema android開發 red 定制 xmlns @+ div Android開發中,經常需要為ListView定制Adapter,綁定各種子類控件。如果Item包含Button等Checkable的控件,那麽就會發生點擊Item無法響應的問題。

關於ListView中item子控件搶奪焦點的解決方法

ble androi 子類 直接 沖突 getview block BE 之間 1.在開發中,listview可以說是我們使用最頻繁的控件之一了,但是關於listview的各種問題也是很多。當我們使用自定義布局的Listview的時候,如果在item的布局文件裏面存在But

微信小程式-06 tab選項卡滑動切換列表Item(scroll 、 swiper)資料的獲取等所用到的都有了

目錄   示例圖片 WXML js WXSS 示例圖片 WXML <view > <scroll-view scroll-x="true" class="tab-h" scroll-left="{{scrollLeft}}

Content指令碼擴充套件的其他頁面指令碼的訊息傳遞

                我正在實現一個Chrome瀏覽器擴充套件來解析某社交網站的資料(也就是扒網頁)。點選擴充套件的圖示,它將會pop up出一個氣泡視窗,上面顯示當前解析的結果。解析的工作由content page的一個javascript指令碼負責。更具體的資料流程是:點選圖標出現氣泡視窗(po

子視窗視窗之間訊息

一.子視窗控制元件向父視窗傳送訊息 a.由於子視窗控制元件都是系統內部定義的,即訊息處理回撥函式和視窗類由系統部署 b.子控制元件產生相對應控制元件的所屬事件時,(系統會處理子控制元件)並向父視窗傳送

Vue2.0中子元件向元件傳遞資料的方法,以完整demo演示

子元件child.vue原始碼:<template> <div class="child"> <button @click="sendData">點擊向父元件傳資料</button> </div> &

Bootstrap列表list-group-itemcard 卡片

典型的例子:<div class="container">bootstrap中container垂直居中  <h2>圖片卡片</h2>  <p>圖片在頭部 (card-img-top):</p>  <div class="card" style

微信小程式--(5-1)點選列表item,把item上面顯示的所有資料,傳遞到另外一個頁面

1,WXML頁面 其實很簡單,由於本人是小白,所以記錄一下。   <view class="item_width weui-pa" wx:for="{{itemsData}}" wx:key="">       <view class="weui-medi

vue組件子組件數據之間的傳遞

data getch -c div ESS ted 年齡 fun on() <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>v

【APACHE MINA2.0開發之一】搭建APACHE MINA框架並實現SERVERCLIENT端的簡單訊息傳遞

Hibernate系列學習階段到此結束了,那麼緊接著進入Apache Mina的開發學習,很多童鞋在微薄和QQ中疑問Himi為什麼突然脫離遊戲開發了,嘿嘿,其實可能更多的童鞋已經看出來了,Himi在偏向伺服器Server端開發了,Hibernate、MySQL等都是為了Server端Mina開發而做的

JavaC#通過Byte[]位元組陣列實現訊息傳遞,跨語言資料序列化

支援型別: byte、short、int、long、float、double、boolean、char、String、byte[] Java程式碼 package com.itshidu.io; import java.nio.charset.Charset;

RN中子元件和元件之間的資料傳遞問題

使用RN做專案已經有兩個月了,雖然現在大部分情況下已經使用了Redux,進行狀態的管理和資料的處理,後續會說一下自己是如何使用Redux的,現在先說一下在RN中一個關鍵的資料傳遞問題,雖然後續可能專案中添加了Redux架構,但也不代表這每個頁面都去使用,畢竟為了