QProgressBar 设置文字在控件外 右侧
时间: 2024-05-15 08:12:57 浏览: 84
QProgressBar 默认情况下是不支持在控件外显示文字的,但是你可以通过自定义 QStyle 来实现这个功能。
具体步骤如下:
1. 创建一个自定义的 QStyle 类,继承自 QProxyStyle。
2. 重写 drawControl 方法,在绘制 QProgressBar 的时候,手动将文本绘制在控件的右侧。
代码示例:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QPalette
from PyQt5.QtWidgets import QProxyStyle, QStyle
class CustomProgressBarStyle(QProxyStyle):
def drawControl(self, element, option, painter, widget=None):
if element == QStyle.CE_ProgressBarLabel and widget is not None:
palette = widget.palette()
font = widget.font()
font_metrics = widget.fontMetrics()
progress_bar_rect = self.subElementRect(QStyle.SE_ProgressBarContents, option, widget)
text = widget.text().replace('%p', str(option.progress))
text_rect = font_metrics.boundingRect(text)
text_rect.moveCenter(progress_bar_rect.center() + Qt.Point(10 + text_rect.width() // 2, 0))
painter.setPen(palette.text().color())
painter.setFont(font)
painter.drawText(text_rect, Qt.AlignCenter, text)
else:
super().drawControl(element, option, painter, widget)
```
3. 在 QProgressBar 控件中设置自定义风格。
```python
progress_bar = QProgressBar()
progress_bar_style = CustomProgressBarStyle()
progress_bar.setStyle(progress_bar_style)
```
这样就可以在 QProgressBar 控件的右侧显示文本了。
阅读全文