更新添加:
我已经解决了这个问题,经过一段时间。首先,我尝试MySubmenu -> clear()
在单击父菜单时调用并重建子菜单。令人惊讶的是,这并没有奏效。所以我带来了大炮:delete MySubmenu
其次是MySubmenu = new QMenu (MyMainWindow)
重建子菜单。它现在可以工作,没有太多明显的延迟。所以我很高兴,我想。
原始问题:
我有一个包含大约 1000 个项目的子菜单(它是调试器中的 C 函数列表)。默认情况下,Qt 在列中显示子菜单,但是这个子菜单太大而无法在屏幕上显示,并且我无法访问不适合的项目。
所以我使用样式表使子菜单可滚动:
MySubmenu -> setStyleSheet ("* { menu-scrollable: 1 }") ;
它看起来像这样:
请注意顶部和底部的滚动按钮。但是现在如果我选择一个项目(本例中为 PopRecordLength),那么下次我打开子菜单时,PD_DecryptCommand 上面的所有项目都消失了:
顶部的滚动按钮消失了(您可以看到的小线是以前项目的下划线。)如果我向下滚动到底部,则会出现很大的空白区域。子菜单的总大小没有改变,但 PD_DecryptCommand 上面的项目从顶部消失了,我无法用鼠标或键盘访问它们。
然而……我刚刚发现,在准备这篇文章的过程中,如果我点击这个大空白区域,子菜单就会消失,但我下次打开它时,它已经恢复到原来的状态。所以有一个解决方法。但这不是很友好。
这是Qt中的错误吗?还是我没有正确设置样式表?