当 QProgressBar 存在时如何居中对齐 QPushButton?
Posted
技术标签:
【中文标题】当 QProgressBar 存在时如何居中对齐 QPushButton?【英文标题】:How to center align a QPushButton when a QProgressBar is present? 【发布时间】:2019-01-29 14:13:48 【问题描述】:我正在尝试将QProgressBar
放在QPushButton
下方并将它们对齐在QVBoxLayout
的中心,但由于某种原因,当进度条出现时按钮保持左对齐,如果它居中对齐不是。
我尝试将所有父窗口小部件和布局的对齐方式设置为Qt.AlignCenter
,但进度条一直使按钮向左移动。
connect_box = QVBoxLayout()
connect_box.setAlignment(Qt.AlignCenter)
connect_button = QPushButton('Connect')
connect_button.setFixedSize(120, 30)
connect_progress = QProgressBar()
connect_progress.setRange(0, 10000)
connect_progress.setValue(0)
connect_box.addWidget(connect_button)
connect_box.addWidget(connect_progress)
connect_box.setContentsMargins(0, 20, 0, 0)
我希望按钮在添加进度条时保持居中对齐。
【问题讨论】:
【参考方案1】:试试看:
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class MyWidget(QWidget):
def __init__(self):
super().__init__()
connect_button = QPushButton('Connect')
connect_button.setFixedSize(120, 30)
connect_progress = QProgressBar()
connect_progress.setRange(0, 10000)
connect_progress.setValue(0)
connect_box = QVBoxLayout(self)
connect_box.setAlignment(Qt.AlignCenter)
connect_box.addWidget(connect_button, alignment=Qt.AlignCenter) # < ----
connect_box.addWidget(connect_progress)
connect_box.setContentsMargins(0, 20, 0, 0)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
【讨论】:
太好了,行得通!我没有注意到那个参数。谢谢!以上是关于当 QProgressBar 存在时如何居中对齐 QPushButton?的主要内容,如果未能解决你的问题,请参考以下文章
当其他元素居中对齐时,使用 Flexbox 将页脚与页面底部对齐