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

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值