Pergunta

eu tenho um QMdiSubWindow e preciso filtrar o evento de minimização para poder simplesmente hide() a janela.

Eu tentei o seguinte:

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

Isso filtra TODAS as alterações de estado da janela, como maximizar.Eu preciso exclusivamente do evento minimize.

event->ignore() não ignora nada.Eu também tentei event->setAccepted(false), que também não teve sucesso no cancelamento de eventos.

Foi útil?

Solução

void accounts::event(QEvent *e)
{
  if (e->type() == QEvent::WindowStateChange) {
    if (isMinimized()) {
      hide();
      e->ignore();
    } else {
      e->accept();
    }
  }
  QMdiSubWindow::event(e);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top