当 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 将页脚与页面底部对齐

Qt C++ - 在 QSplashScreen 内对齐 QProgressBar

如何调整这个固定的表格标题,使其左对齐而不是居中?

如何将内容水平居中对齐并固定在左侧?

wps演示怎么把文本框居中对齐

两个项目在一行时左右对齐,在两行时居中