Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在没有QProxyStyle的情况下修改样式提示?_Python_Qt_Pyqt_Pyside_Qstyle - Fatal编程技术网

Python 如何在没有QProxyStyle的情况下修改样式提示?

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方法是通

我使用Qt(PySide或PyQt4)的Python绑定。他们没有
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中可用。

我接受这个答案,因为它使我确信修改现有样式的样式提示是很难做到的。但遗憾的是,他们没有修改样式提示。