事件有两个函数,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