过滤最小化事件

时间:2012-07-28 06:29:08

标签: c++ qt mdi qevent

我有QMdiSubWindow,我需要过滤最小化事件,这样我就可以hide()窗口。

我尝试了以下内容:

void accounts::changeEvent ( QEvent *event )
{
     if(event->QEvent::WindowStateChange) {
          event->ignore(); 
     }
}

这会过滤所有窗口状态更改,例如最大化。我只需要最小化事件。

event->ignore()不会忽略任何事情。我也尝试了event->setAccepted(false),这也取消了事件。

1 个答案:

答案 0 :(得分:3)

void accounts::event(QEvent *e)
{
  if (e->type() == QEvent::WindowStateChange) {
    if (isMinimized()) {
      hide();
      e->ignore();
    } else {
      e->accept();
    }
  }
  QMdiSubWindow::event(e);
}