小部件消失的Qt事件

时间:2017-04-20 17:27:26

标签: c++ qt

当窗口的任何窗口小部件消失时,Qt中是否有办法处理情况。即,如果窗口小部件处于选项卡控件中,并且用户已更改活动选项卡,或者用户只是滚动并且窗口小部件在屏幕外,以及当它返回到屏幕上时。

可以为这两个事件添加一些代码吗?

如果可以在全球范围内完成,那就最好......

1 个答案:

答案 0 :(得分:1)

  

当窗口的任何窗口小部件消失时,Qt中是否有办法处理情况。即,如果窗口小部件处于选项卡控件中,并且用户已更改活动选项卡,或者用户只是滚动并且窗口小部件在屏幕外,以及当它返回到屏幕上时。

问题的方式使人们认为需要处理小部件show-hide-expose状态更改:

bool MyWidget::event(QEvent* pEvent)
{
    if (pEvent->type() == QEvent::Show)
    {
      // event "shown"
    }
    else if (pEvent->type() == QEvent::Hide)
    {
      // event "hidden"
    }
    else if (pEvent->type() == QEvent::Expose)
    {
      // event "exposure changed"
      // deal with QExposeEvent and evaluate the exposed region
      // QExposeEvent* pExposeEvent = reinterpret_cast<QExposeEvent*>(pEvent);
    }
    return QWidget::event(pEvent);
}
  

如果可以在全球范围内完成,那就最好......

顶级窗口小部件中的事件过滤器可以解决这个问题。或者,您可以覆盖顶级窗口小部件的event()功能,但查找受影响的确切窗口小部件是另一回事。

请参阅QExposeEvent description