我想为一个QStyle::PM_TabBarTabHSpace应用程序更改PyQt属性。我读过用于QStyle的Qt文档,但我不知道如何在PyQt中正确设置它。
非工作代码:
style = QStyleFactory.create('Cleanlooks')
style.PM_TabBarTabHSpace = 5 # 5 pixels?
app.setStyle(style)这段代码会运行,但它不会更改选项卡标签上的填充内容。我尝试使用样式表来更改选项卡填充,但这破坏了图形绘制,这样就不会绘制任何默认的外观感觉东西(我不想重新实现所有的ui绘图)。
我想我可能需要使用QProxyStyle,但是我找不到如何在PyQt4中使用它的任何例子。编辑: PyQt似乎没有QProxyStyle,因为from PyQt4.QtGui import QProxyStyle失败了。
有人可以张贴一个改变PM_TabBarTabHSpace值的例子吗?谢谢。
编辑这里是一个框架代码。更改PM_TabBarTabHSpace值不起任何作用。:(
from PyQt4.QtGui import (QApplication, QTabWidget, QWidget,
QStyle, QStyleFactory)
def myPixelMetric(self, option=None, widget=None):
if option == QStyle.PM_TabBarTabHSpace:
return 200 # pixels
else:
return QStyle.pixelMetric(option, widget)
style = QStyleFactory.create('Windows')
style.pixelMetric = myPixelMetric
app = QApplication('test -style Cleanlooks'.split())
# Override style
app.setStyle(style)
tab = QTabWidget()
tab.addTab(QWidget(), 'one')
tab.addTab(QWidget(), 'two')
tab.show()
app.exec_()发布于 2014-03-18 13:26:34
QStyle.pixelMetric(.)是内建类方法。不能通过函数指向进行设置。因为它是用C代码编写的。您可以通过添加
def myPixelMetric(self, option=None, widget=None):
print 'Debug, i am calling'
...在myPixelmetric函数中。您需要对样式对象进行子类以实现这一点。下面是一个示例:
class MyStyle(QCommonStyle):
def pixelMetric(self, QStyle_PixelMetric, QStyleOption_option=None, QWidget_widget=None):
if QStyle_PixelMetric == QStyle.PM_TabBarTabHSpace:
return 200
else:
return QCommonStyle.pixelMetric(self, QStyle_PixelMetric, QStyleOption_option, QWidget_widget)
app = QApplication('test -style Cleanlooks'.split())
app.setStyle(MyStyle())这个代码片段可以工作,但它很难看。我更喜欢使用样式表而不是操作样式。
https://stackoverflow.com/questions/5126244
复制相似问题