Qt之设置子菜单的弹出延时

Qt中主菜单中的子菜单并不是立即弹出的,在windows上默认会延时256毫秒再弹出。这样一般情况下不会有问题,但是在定制菜单时可能会出现鼠标移动过快导致按钮hover状态无法自动取消的问题。
如下图所示:


这是之前做的一个仿360安全卫士托盘菜单Qt之定制个性化系统托盘菜单(仿360安全卫士)
鼠标多移动几次后,“软件管家”按钮的hover状态就无法自动取消了。但是真*360安全卫士的托盘菜单却无此问题,而且它的子菜单弹出非常快,几乎无延迟。这就涉及到Qt的事件循环机制了,子菜单实际上是一个popup弹窗,自带事件循环,如果按钮的hover状态被取消前,事件循环就进入到子菜单中,就会出现上述问题。
关于Qt事件循环详见:Qt基础之七:事件循环
这里先给出结论:将子菜单的延时设为0后,上述问题解决。
下面进入正题,如何设置子菜单的弹出延时。默认情况下是这样子的:

你可能感兴趣的:(Qt工作笔记,qt,QMenu,自定义菜单,QProxyStyle,取消hover状态)