我使用 Qt 的 Python 绑定(PySide 或 PyQt4)。他们没有QProxyStyle
.
我想更改样式提示的值。例如改变SH_Menu_SubMenuPopupDelay
子菜单弹出延迟时间。
在本机 C++ Qt 中我会使用QProxyStyle
并覆盖styleHint
并过滤感兴趣的样式提示并返回我喜欢的值。完成here例如。
但在我使用的Python绑定中QProxyStyle
不可用。那么如何修改现有样式的样式提示呢?
菜单弹出延迟不是固定值,因为它取决于当前的样式。无法以编程方式设置它。
Qt 修改现有样式的样式提示的方法是通过QProxyStyle
。然而,即使这样也不能保证适用于用户定义或第三方样式,因为它们没有义务调用QStyle.proxy()
。即使他们这样做了,PyQt 和 PySide 都没有包装任何基于插件的类(包括QProxyStyle
).
完全控制样式提示行为的唯一方法是编写您自己的、特定于应用程序的样式类。但是,当然,您将不再修改一个的样式提示existing风格,因此这超出了当前问题的范围。
这似乎留下了一个剩下的选择,那就是子类化QMenu
并完全绕过样式提示。 Grepping Qt 源代码揭示了(忽略各种样式类)唯一的地方SH_Menu_SubMenuPopupDelay
使用的是在mouseMoveEvent
of QMenu
。因此,可以重新实现它以获得您想要的行为。
UPDATE:
The QProxyStyle
PyQt5 中现在提供了该类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)