QProgressBar 设置文字在控件外
时间: 2024-05-15 20:12:53 浏览: 16
QProgressBar 默认情况下将文本显示在控件内部,但可以使用样式表将文本移到控件外部。
以下是一个示例样式表:
```
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: green;
width: 20px;
}
QProgressBar::chunk:after {
content: "Some Text";
position: absolute;
top: -30px;
left: -5px;
}
```
这里的 `QProgressBar::chunk:after` 伪元素用于将文本移动到控件的顶部。您可以更改 `content` 属性中的文本以显示所需的任何内容,并使用 `top` 和 `left` 属性将其定位在所需的位置。
相关问题
QProgressBar 设置文字在控件外 右侧
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 控件的右侧显示文本了。
qprogressbar设置文字在外边
可以通过设置 `QProgressBar` 的样式表来实现在进度条外部显示文字。具体步骤如下:
1. 使用 `QProgressBar::chunk` 选择器来设置进度条的样式,例如:
```python
progress_bar.setStyleSheet("""
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: #CD96CD;
width: 20px;
}
""")
```
2. 在样式表中使用 `::chunk` 伪元素的 `subcontrol-origin` 和 `subcontrol-position` 属性来设置文字的位置。例如,将文字放在进度条的左侧:
```python
progress_bar.setStyleSheet("""
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: #CD96CD;
width: 20px;
subcontrol-origin: padding;
subcontrol-position: left;
}
QProgressBar::chunk:disabled {
background-color: #aaa;
}
""")
```
3. 使用 `QProgressBar` 的 `setFormat` 方法来设置进度条上显示的文字格式。例如:
```python
progress_bar.setFormat("%v/%m (%p%)")
```
这样就可以在进度条左侧显示形如 "50/100 (50%)" 的文字了。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)