控制QProgressBar外观

时间:2014-07-23 03:11:50

标签: python qt pyqt

我想通过简化来自定义QProgressBar外观。 有setMaximumHeight()方法可用。但不幸的是,通过使其看起来很奇怪来削减(或剪辑)进度条的高度。相反,我宁愿挤压或垂直缩放。 剪切问题在OSX平台上尤为明显。这是插图:

enter image description here

1 个答案:

答案 0 :(得分:3)

如果样式由运行Qt的平台完成,则无法轻松完成。在Windows和OS X上,小部件的样式实际上由平台API呈现。基元的大小由用户选择的样式设置(当然,用户可以选择)。

一个简单的解决方法是覆盖平台样式。您可以通过在窗口小部件上设置非空样式表来完成此操作。由于样式表只对Qt有意义,并且平台样式API不知道如何处理它们,因此非空样式表完全禁用给定窗口小部件的平台样式。你开始使用Qt提供的非常稀疏的风格。这放松了固定平台特定的尺寸。您当然必须提供一个特定于平台的样式表来近似控件的原生外观 - 只有现在您可以根据自己的喜好调整控件的大小。

扩展控件图像的解决方法当然是可行的。您需要将render()小部件放到像素图或图像上,然后缩放它,并使用它来渲染目标小部件。你需要为它编写一个包装器小部件。除了大小限制外,包装器需要使自己“显示”以完全像包装的小部件一样动作。这将需要转发事件,大小和大小限制(带有所需的更改),绘画管理等。