自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談QT父子Widget之間消息傳遞機制

移動開發(fā)
QT 父子Widget之間消息傳遞機制是本文要介紹的內(nèi)容,主要是來了解并學習QT Widget應用中消息傳遞的機制,具體內(nèi)容的實現(xiàn)來看本文詳解。

QT 父子Widget之間消息傳遞機制是本文要介紹的內(nèi)容,主要是來了解并學習QT Widget應用中消息傳遞的機制,具體內(nèi)容的實現(xiàn)來看本文詳解。

在父widget上擺一個子widget后,當click子widget時:只會進入到子widget的相關(guān)事件處理函數(shù)中,比如進入到mousePressEvent()中,而不會進入到父widget的對應事件處理函數(shù)中。畢竟:click的是子widget,其遮擋住了父widget,從而父widget接收不到這個事件。然而事實真的是這個樣子嗎?

我做了一個測試:在一個QWidget上建了一個QLabel。而后實現(xiàn)父QWidget的mousePressEvent(),然后跟一下發(fā)現(xiàn):當我click這個label時:居然能進入到父QWidget的mousePressEvent()中!但是如果把子改成QPushButton則進入不了!

咨詢了一下別人,得到的答案是:如果子widget沒有accept或ignore該事件,則該事件會被傳遞給其父親。

事實也確實如此:

1、對于QLabel:如果不重寫mouse處理函數(shù),也沒有設置事件過濾器等操作的話,則相當于:其對mouse這個事件一直沒有進行處理,那沒有進行處理的話,相當于上邊所說的情況,此時該事件會被傳遞給其parent。

2、而對于QPushButton而言:當click它時:其會發(fā)射clicked()信號,其實這就相當于它對該事件的一個operator過程。所以:這里它accept該事件并進行了對應處理。從而:無法傳遞給其父窗口。

那么:對于一個繼承而來的類,只要我們重寫實現(xiàn)了其各個事件處理函數(shù),則對應的事件肯定無法傳遞給其父widget!哪怕重寫的該事件處理函數(shù)的函數(shù)體為空!

如果是標準的控件對象,則其肯定沒重寫各個事件處理函數(shù)。那消息能不能傳遞到父widget中,則取決于中途有沒有使用事件過濾器等將該信號攔截下來了。

小結(jié):

QT 父子Widget之間消息傳遞機制的內(nèi)容介紹完了,希望通過QT Widget應用內(nèi)容的學習能對你有所幫助。

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-09-07 16:36:00

Qt Widget

2011-09-09 17:59:26

QT Widget

2014-03-04 15:28:32

iOS開發(fā)消息傳遞機制

2011-09-08 17:48:33

Web Widget

2011-06-24 10:05:51

QT 對象 父對象

2011-09-07 16:24:10

Qt Widget

2022-11-14 09:13:16

2011-09-07 16:28:46

QT WidgetQWidget

2011-06-28 15:37:34

Qt 內(nèi)存

2011-06-21 16:51:21

Qt 靜態(tài) 編譯

2011-06-20 16:38:33

Qt QWidget Qt4.5

2010-08-02 16:59:54

2011-07-05 10:22:44

Qt Sqlite

2011-05-31 11:55:00

Android 消息機制

2011-07-04 15:30:24

Qt 布局 GridLayout

2011-07-01 15:04:49

Qt 內(nèi)省

2011-03-10 15:22:08

訪問控制機制Java

2009-07-16 09:46:20

iBATIS Log機

2009-09-04 11:00:13

通過C#引用傳遞

2011-06-13 10:03:19

Qt 多線程 編程
點贊
收藏

51CTO技術(shù)棧公眾號