PyQt5 QProgressBar设置border-radius后圆角失效、文字错位问题咨询
问题说明
这个渲染异常是QSS(Qt样式表)的已知适配问题,不是PyQt5或Designer的故障。
你只给QProgressBar外层控件设置了边框和圆角,但没有定义内部进度填充块(::chunk子控件)的样式,也没有指定文本的对齐规则,就会出现两个典型异常:
- 内部填充块默认是直角矩形,不会自动继承外层的圆角属性,超出圆角边界的部分直接溢出显示
- 进度文本默认的定位逻辑不会自动适配圆角后的控件内边距,就会出现位置偏移
异常效果如下:
只要按你描述的步骤拖拽控件加两行样式,确实可以100%复现这个问题。
修复方法
替换成完整的QProgressBar样式即可,代码如下:
QProgressBar { border: 2px solid black; border-radius: 20px; text-align: center; /* 修正文本位置,强制居中显示 */ } QProgressBar::chunk { border-radius: 18px; /* 圆角比外层小2px,避免被边框裁切出毛边 */ background: #0d6efd; /* 可自定义进度填充色 */ margin: 2px; /* 可选,让填充块和外边框留空隙,视觉效果更自然 */ }
适配要点
::chunk的圆角值必须比外层控件的圆角小1~2px,否则填充块边缘会被外层边框硬裁切,显示不规整- 必须显式声明
text-align属性,否则文本不会自动适配圆角控件的内部边界,错位问题不会消失 - 如果要做左右不对称的圆角进度条(比如进度走到最右端才显示右侧圆角),可以给
::chunk单独设置单侧圆角属性适配
内容的提问来源于stack exchange,提问作者ChronoVortex
相关产品推荐
相关产品推荐

