我正在使用 QT4,并创建了一个 QGLWidget,我想在其中实现右键单击上下文菜单。我希望上下文菜单仅在单击鼠标右键并按下 CTRL 键时出现。
我尝试通过在按下 CTRL 键时设置一个控制标志来实现这一点,然后在释放 CTRL 键时清除它(通过 a keyReleaseEvent
)。问题是当上下文菜单启动时我没有收到a keyReleaseEvent
(不仅仅是CTRL,根本没有按键释放)。
例如:我按住CTRL,单击鼠标右键,然后出现上下文菜单(仍然按住CTRL)。在没有选择菜单中的任何内容的情况下,我释放了 CTRL 键,但我的程序没有收到keyPressEvent
. 因此我的标志永远不会被清除,并且下次用户右键单击(即使没有控制)时,上下文菜单也会出现。
keyPressEvent
当上下文菜单存在时,为什么我没有收到?
我正在使用 QT 4.8 (C++) 并在 Windows 和 Linux 上进行了测试,结果相同。