首页 > 解决方案 > QDialog中的中心确定按钮

问题描述

是否可以在 QDialog 中将 OK 按钮居中?

class CustomDialog(QDialog):
    def __init__(self, text, parent):
        super().__init__(parent)

        self.setFixedSize(200, 100)
        self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.WindowTitleHint | Qt.Window
                                         | Qt.CustomizeWindowHint)
        QBtn = QDialogButtonBox.Ok

        self.buttonBox = QDialogButtonBox(QBtn)
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)

        self.layout = QVBoxLayout()
        message = QLabel(text)
        self.layout.addWidget(message)
        self.layout.addWidget(self.buttonBox)
        self.setLayout(self.layout)

该对话框显示“确定”按钮,我希望它居中而不是右

标签: pythonpyqt

解决方案


最简单的方法是使用centerButtons属性:

    self.buttonBox.setCenterButtons(True)

还要考虑默认情况下,通过尝试填充布局“单元格”中的所有可用空间来将小部件添加到布局中。指定对齐方式会通过使用其大小提示作为最大空间来对齐小部件。

因此,另一种方法是更改​​为:

    self.layout.addWidget(self.buttonBox, alignment=Qt.AlignCenter)

推荐阅读