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