Python 如何在没有QProxyStyle的情况下修改样式提示?
我使用Qt(PySide或PyQt4)的Python绑定。他们没有Python 如何在没有QProxyStyle的情况下修改样式提示?,python,qt,pyqt,pyside,qstyle,Python,Qt,Pyqt,Pyside,Qstyle,我使用Qt(PySide或PyQt4)的Python绑定。他们没有QProxyStyle 我想更改样式提示的值。例如,更改子菜单的弹出延迟时间 在本机C++ Qt中,我将使用 qPosiySype 并重写 StyLytt> /Cord>并筛选感兴趣的样式提示并返回我喜欢的值。例如,它已经完成了 但是在我使用的Python绑定中,QProxyStyle不可用。那么如何修改现有样式的样式提示呢?菜单弹出延迟不是固定值,因为它取决于当前样式。无法通过编程方式设置它 修改现有样式的样式提示的Qt方法是通
QProxyStyle
我想更改样式提示的值。例如,更改子菜单的弹出延迟时间
在本机C++ Qt中,我将使用<代码> qPosiySype 并重写<代码> StyLytt> /Cord>并筛选感兴趣的样式提示并返回我喜欢的值。例如,它已经完成了
但是在我使用的Python绑定中,
QProxyStyle
不可用。那么如何修改现有样式的样式提示呢?菜单弹出延迟不是固定值,因为它取决于当前样式。无法通过编程方式设置它
修改现有样式的样式提示的Qt方法是通过QProxyStyle
。但是,即使这样也不能保证对用户定义的样式或第三方样式有效,因为它们没有义务调用QStyle.proxy()
。即使他们这样做了,PyQt和PySide也不会包装任何基于插件的类(包括QProxyStyle
)
完全控制样式提示行为的唯一方法是编写自己的、特定于应用程序的样式类。但是,当然,您将不再修改现有样式的样式提示,因此这超出了当前问题的范围
这似乎剩下一个选项,那就是子类化QMenu
,并完全绕过样式提示。对Qt源代码进行灰色显示(忽略各种样式类)仅在QMenu
的mouseMoveEvent
中使用SH_Menu\u子菜单popupdelay
的位置。因此,有可能重新实现它,以获得您想要的行为
更新:
QProxyStyle
类现在在PyQt5中可用。我接受这个答案,因为它使我确信修改现有样式的样式提示是很难做到的。但遗憾的是,他们没有修改样式提示。