1. 程式人生 > >QT學習之路(8):事件的傳遞和忽略

QT學習之路(8):事件的傳遞和忽略

事件有兩個函式,accept()和event(),前者代表該元件希望接受這個事件,這個事件將不會傳播.而後者代表該元件希望忽略這個事件那麼事件就會繼續向它的父元件傳播.所有事件都是預設為accept()的,但是在QWidget中的所有事件回撥函式都是呼叫了ignore(),這樣呼叫QWidegt的同名函式就會使得該事件繼續傳播.

在我們上一個程式中,點選文字編輯框的事件會被文字編輯框接受並且停止傳播.但是現在我們自己派生了一個文字編輯框的類,並且重寫事件回撥函式,這樣可以達到點選文字編輯框也可以顯示滑鼠的位置.

#ifndef QTEXTEDIT_TEST
#define QTEXTEDIT_TEST
#include "QMouseEvent" #include "QTextEdit" #include "QString" class QTextEdit_test:public QTextEdit { Q_OBJECT public: explicit QTextEdit_test(QWidget *parent = 0):QTextEdit(parent){} ~QTextEdit_test(){} protected: void mousePressEvent(QMouseEvent *event ) { QTextEdit::mousePressEvent(event
); event->ignore(); } }; #endif // QTEXTEDIT_TEST

這裡寫圖片描述