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

Posted

技术标签:

【中文标题】无法忽略任务栏菜单中的最大化事件【英文标题】:Unable to Ignore maximize event from taskbar menu 【发布时间】:2014-05-27 10:03:01 【问题描述】:

在 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】:

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

来自documentation,请注意,由于某些窗口系统的限制,这并不总是报告预期的结果(例如,如果 X11 上的用户通过窗口管理器最大化窗口,Qt 无法将其与任何其他调整大小)。随着窗口管理器协议的发展,这种情况有望得到改善。

【讨论】:

Linux Centos 上面临的问题,isMaximized() 在 centos 上工作,当它去最大化获取事件“if(event->type() == QEvent::WindowStateChange && isMaximized()) " 但无法忽略最大化事件。

以上是关于无法忽略任务栏菜单中的最大化事件的主要内容,如果未能解决你的问题,请参考以下文章

qt去掉标题栏的窗口,最小化到任务栏后,怎么没有系统菜单?

Winform 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体

Delphi主窗口任务栏菜单的问题(转发WM_SYSCOMMAND到Application)

如何隐藏开始菜单栏

Windows Mobile 隐藏任务栏和菜单栏

win7任务栏里的程序点击无法弹出,只能通过tab+alt切换程序