certflow.widgets.dialog_button_bar 源代码
"""对话框底部按钮栏(确认 / 取消 / 应用)。
替代各对话框手写 ``btn_layout`` + ``addStretch()`` 的重复。默认右对齐、定宽,
发出 ``accepted`` / ``rejected`` / ``applied`` 信号,供 ``BaseDialog`` 或任意
``QDialog`` 直接接线。
"""
from __future__ import annotations
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QHBoxLayout, QPushButton, QWidget
[文档]
class DialogButtonBar(QWidget):
"""确认 / 取消 / 应用 按钮栏。"""
accepted = Signal()
rejected = Signal()
applied = Signal()
def __init__(
self,
parent: QWidget | None = None,
show_apply: bool = False,
confirm_text: str = "确认",
cancel_text: str = "取消",
) -> None:
super().__init__(parent)
layout = QHBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.addStretch()
if show_apply:
self.apply_btn = QPushButton("应用")
self.apply_btn.setObjectName("applyButton")
self.apply_btn.clicked.connect(self.applied.emit)
layout.addWidget(self.apply_btn)
self.cancel_btn = QPushButton(cancel_text)
self.cancel_btn.clicked.connect(self.rejected.emit)
self.ok_btn = QPushButton(confirm_text)
self.ok_btn.setObjectName("primaryButton")
self.ok_btn.setDefault(True)
self.ok_btn.clicked.connect(self.accepted.emit)
layout.addWidget(self.cancel_btn)
layout.addWidget(self.ok_btn)