Qt 如果应用程序正忙,则不会显示QSystemTrayIcon弹出菜单

Qt 如果应用程序正忙,则不会显示QSystemTrayIcon弹出菜单,qt,Qt,我使用QSystemTrayIcon类显示TrayIcon菜单,单击TrayIcon菜单时将显示弹出菜单 如果应用程序正忙于处理其他任务,则单击TrayIcon,弹出菜单将不显示,但菜单边框会显示一段时间。同样的代码也适用于Mac 以下是我尝试显示菜单的方式: QMenu *myMenu(); QSystemTrayIcon myTrayIcon; myTrayIcon.mytMenu()->show(); 可能问题在于一些广泛的计算块或一个大而慢的循环。如果您知

我使用QSystemTrayIcon类显示TrayIcon菜单,单击TrayIcon菜单时将显示弹出菜单

如果应用程序正忙于处理其他任务,则单击TrayIcon,弹出菜单将不显示,但菜单边框会显示一段时间。同样的代码也适用于Mac

以下是我尝试显示菜单的方式:

    QMenu *myMenu();
    QSystemTrayIcon myTrayIcon;
    myTrayIcon.mytMenu()->show();

可能问题在于一些广泛的计算块或一个大而慢的循环。如果您知道这个瓶颈在哪里,您可以让事件循环处理排队事件,只需插入

QApplication::processEvents();
在计算循环中的某个点


另外,尝试将大而昂贵的任务拆分为小而快速的任务,您可以让事件循环来处理中间的事件。

谢谢Felix,我将尝试将processevents作为temproary修复程序来实现。有时这是唯一的一次性解决方案,而不是临时解决方案!有很多方法可以克服这个问题。这篇文章可能对你有用:谢谢dschulz,我会尽力理解它。@dschulz链接消失了!“你能解释一下它包含了什么吗?”和平编码员纠正了断开的链接。如果仍然失败,请重新加载页面,它应该可以正常工作。