无法忽略任务栏菜单中的最大化事件

时间:2014-05-27 10:03:02

标签: c++ qt

使用Linux Centos,我的任务是忽略应用程序任务栏菜单中的最大化按钮事件。基本上我不希望我的应用程序最大化。 所以我实现了QDialog :: changeEvent(QEvent *)& EventFilter希望能够忽略适当的事件:

void MyDialog::changeEvent(QEvent* event)
{
  if (event->type() == QEvent::WindowStateChange)
  {
    cout << "window state change event! window state:" << windowState() << endl;
    //should i perhaps do event->accept() or event->ignore() here?
  }
  else
  {
    QDialog::changeEvent(event);
  }
}    

bool MyDialog::eventFilter(Qobject *object, QEvent* event)
{
    if(event->type() == QEvent::WindowStateChange && isMaximized() )
    {
      event->ignore();          
      return truel;
    }

    return QDialog::eventFilter(object, event);
}

不幸的是,这也不起作用。事件仍在进行,窗口仍在最大化。解决这个问题是否存在某种方式,哪种方式!?

提前感谢!

1 个答案:

答案 0 :(得分:1)

isMaximized()可能不适用于所有窗口系统

documentation开始,请注意由于某些窗口系统的限制,这并不总是报告预期的结果(例如,如果X11上的用户通过窗口管理器最大化窗口,Qt无法区分这来自任何其他调整大小)。随着窗口管理器协议的发展,预计会有所改进。