事件处理顺序:
事件过滤器eventFilter(QObject *obj, QEvent *e);----->事件分发event(QEvent *e);-------->具体事件keyPressEvent(QKeyEvent *e)等事件
一般而言,事件过滤器是子控件安装,父窗口过滤调子控件的某些消息使其无法响应(如果自己过滤自己,那可以直接用事件分发,继承下event事件就行了),因为过滤器是第一个优先级
m_ccOGL->installEventFilter(this);
...
bool RouterPlan::eventFilter(QObject* watched, QEvent* event)
{
if (watched == m_ccOGL)
{
if (event->type() == QEvent::MouseButtonPress ||
event->type() == QEvent::MouseButtonRelease)
{
...
}
}
return parent::eventFilter(watched, event);
}
事件分发一般是自己分发自己的事件,用于事件处理较多的情况
bool Sed_ccOglWidget::event(QEvent* evt)
{
switch (evt->type())
{
case QEvent::TouchBegin:
case QEvent::TouchEnd:
...
}
return true;
case QEvent::Close:
{

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



