gpt4 book ai didi

linux - Mac 的菜单栏子类无法像在 Linux 和 Windows 中那样工作

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

我想运行从Linux到Mac PC的QT代码,我将QMenu子集成,以暗示一个功能,例如,选择子菜单的选项时,它不会关闭顶级菜单。而代码在 Linux 中工作,但它在 Mac OS 中不起作用,它是否将 Mac 的菜单栏移动到系统菜单,其行为不一样?

相关部分代码:

void MySubMenu::mouseReleaseEvent(QMouseEvent * e)
{
QAction *action = activeAction();
if (action && action->isEnabled()) {
action->setEnabled(false);
QMenu::mouseReleaseEvent(e);
action->setEnabled(true);
action->trigger();
}
else
QMenu::mouseReleaseEvent(e);
}

当我调试上面的代码,在 block 中添加跟踪时,我发现,在 env Mac 中,当鼠标点击菜单栏的选项时,这个 mouseReleaseEvent() 从未被输入。

最佳答案

Mac 菜单不是由 Qt 处理的,它们是由 native 代码处理的,Qt 不会收到那里发生的任何事情的通知。菜单栏是一个共享系统资源,IIRC。您无法覆盖它的行为 - 即使您可以,它也会让您的应用程序感觉不合时宜。不要这样做,仅此而已。

关于linux - Mac 的菜单栏子类无法像在 Linux 和 Windows 中那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37833674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com