gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:01 25 4
gpt4 key购买 nike

在 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);
}

不幸的是,这也不起作用。事件仍在进行中,窗口仍在最大化。有什么方法可以解决这个问题!?

提前致谢!

最佳答案

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

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

关于c++ - 无法忽略任务栏菜单中的最大化事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886483/

25 4 0