QDialogButtonBox Class

QDialogButtonBox 클래스는 현재 위젯 스타일에 적합한 레이아웃으로 버튼을 표시하는 위젯입니다. 더 보기...

헤더: #include <QDialogButtonBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속합니다: QWidget

공용 유형

enum ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout, AndroidLayout }
enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
enum StandardButton { Ok, Open, Save, Cancel, Close, …, NoButton }
flags StandardButtons

속성

공공 기능

QDialogButtonBox(QWidget *parent = nullptr)
QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr)
QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr)
QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr)
virtual ~QDialogButtonBox()
QPushButton *addButton(QDialogButtonBox::StandardButton button)
void addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role)
QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role)
QPushButton *button(QDialogButtonBox::StandardButton which) const
QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button) const
QList<QAbstractButton *> buttons() const
bool centerButtons() const
void clear()
Qt::Orientation orientation() const
void removeButton(QAbstractButton *button)
void setCenterButtons(bool center)
void setOrientation(Qt::Orientation orientation)
void setStandardButtons(QDialogButtonBox::StandardButtons buttons)
QDialogButtonBox::StandardButton standardButton(QAbstractButton *button) const
QDialogButtonBox::StandardButtons standardButtons() const

신호

void accepted()
void clicked(QAbstractButton *button)
void helpRequested()
void rejected()

재구현된 보호 기능

virtual void changeEvent(QEvent *event) override
virtual bool event(QEvent *event) override

상세 설명

대화 상자와 메시지 상자는 일반적으로 해당 플랫폼의 인터페이스 가이드라인을 준수하는 레이아웃으로 버튼을 표시합니다. 항상 플랫폼마다 대화 상자의 레이아웃이 다릅니다. 개발자가 QDialogButtonBox에 버튼을 추가하면 자동으로 사용자의 데스크톱 환경에 적합한 레이아웃을 사용합니다.

대화 상자의 대부분의 버튼은 특정 역할을 따릅니다. 이러한 역할은 다음과 같습니다:

  • 대화 상자를 수락하거나 거부합니다.
  • 도움 요청.
  • 대화 상자 자체에서 작업 수행(예: 필드 재설정 또는 변경 사항 적용).

파괴적인 결과를 초래할 수 있는 대화 상자를 종료하는 다른 방법도 있을 수 있습니다.

대부분의 대화 상자에는 거의 표준으로 간주할 수 있는 버튼이 있습니다(예: OKCancel 버튼). 이러한 버튼을 표준 방식으로 만드는 것이 편리할 때가 있습니다.

QDialogButtonBox를 사용하는 방법에는 몇 가지가 있습니다. 한 가지 방법은 버튼(또는 버튼 텍스트)을 직접 만든 다음 역할을 지정하여 버튼 상자에 추가하는 것입니다.

    QDialogButtonBox *buttonBox = new QDialogButtonBox(Qt::Vertical);
    buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
    buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);

또는 사용할 수 있는 몇 가지 표준 버튼(예: 확인, 취소, 저장)을 QDialogButtonBox에서 제공합니다. 이러한 버튼은 플래그로 존재하므로 생성자에서 함께 사용할 수 있습니다.

    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                     | QDialogButtonBox::Cancel);

    connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);

일반 버튼과 표준 버튼을 혼합하여 사용할 수 있습니다.

현재 버튼 상자가 가로인 경우 버튼은 다음과 같은 방식으로 배치됩니다:

GnomeLayout 가로버튼 상자가 가로로 배치된 경우 GnomeLayout
KdeLayout 가로가로로 배치된 버튼 상자 KdeLayout
MacLayout 가로가로로 배치된 버튼 상자 MacLayout
WinLayout 수평가로로 배치된 버튼 상자 WinLayout

버튼 상자가 세로인 경우 버튼은 다음과 같은 방식으로 배치됩니다:

또한 ActionRole 또는 HelpRole 이 있는 버튼만 포함된 버튼 상자는 모델 없는 것으로 간주되어 macOS에서 다른 모양을 가질 수 있습니다:

모델리스 가로 MacLayout 모델리스 가로 스크린샷 MacLayout
모델리스 세로 MacLayout 모델리스 세로 스크린샷 MacLayout

버튼 상자에서 버튼을 클릭하면 실제 버튼을 눌렀을 때 clicked() 신호가 전송됩니다. 편의를 위해 버튼에 AcceptRole, RejectRole, HelpRole 이 있는 경우 각각 accepted(), rejected(), helpRequested() 신호가 전송됩니다.

특정 버튼을 기본값으로 설정하려면 해당 버튼에 QPushButton::setDefault()를 직접 호출해야 합니다. 그러나 기본 버튼이 설정되어 있지 않고 QPushButton::autoDefault 속성을 사용할 때 플랫폼 간에 어떤 버튼이 기본 버튼인지 유지하기 위해 QDialogButtonBox가 표시될 때 수락 역할이 있는 첫 번째 푸시 버튼이 기본 버튼으로 설정됩니다,

QMessageBox, QPushButton, 및 QDialog참조하십시오 .

멤버 유형 문서

enum QDialogButtonBox::ButtonLayout

이 열거형은 버튼 상자에 포함된 버튼을 정렬할 때 사용할 레이아웃 정책을 설명합니다.

Constant설명
QDialogButtonBox::WinLayout0Windows의 애플리케이션에 적합한 정책을 사용합니다.
QDialogButtonBox::MacLayout1macOS의 애플리케이션에 적합한 정책을 사용합니다.
QDialogButtonBox::KdeLayout2KDE의 애플리케이션에 적합한 정책을 사용합니다.
QDialogButtonBox::GnomeLayout3GNOME의 애플리케이션에 적합한 정책을 사용합니다.
QDialogButtonBox::AndroidLayout4Android의 애플리케이션에 적합한 정책을 사용합니다. 이 열거형 값은 Qt 5.10에 추가되었습니다.

버튼 레이아웃은 current style 에 의해 지정되지만, X11 플랫폼에서는 데스크톱 환경의 영향을 받을 수 있습니다.

enum QDialogButtonBox::ButtonRole

이 열거형은 버튼 상자의 버튼을 설명하는 데 사용할 수 있는 역할을 설명합니다. 이러한 역할의 조합은 동작의 다양한 측면을 설명하는 데 사용되는 플래그와 같습니다.

상수설명
QDialogButtonBox::InvalidRole-1버튼이 유효하지 않습니다.
QDialogButtonBox::AcceptRole0버튼을 클릭하면 대화 상자가 수락됩니다(예: 확인).
QDialogButtonBox::RejectRole1버튼을 클릭하면 대화 상자가 거부됩니다(예: 취소).
QDialogButtonBox::DestructiveRole2버튼을 클릭하면 파괴적인 변경(예: 변경 내용 삭제)이 발생하고 대화 상자가 닫힙니다.
QDialogButtonBox::ActionRole3버튼을 클릭하면 대화 상자 내의 요소가 변경됩니다.
QDialogButtonBox::HelpRole4버튼을 클릭하여 도움을 요청할 수 있습니다.
QDialogButtonBox::YesRole5버튼은 "예"와 같은 버튼입니다.
QDialogButtonBox::NoRole6버튼은 "아니요"와 같은 버튼입니다.
QDialogButtonBox::ApplyRole8이 버튼은 현재 변경 사항을 적용합니다.
QDialogButtonBox::ResetRole7이 버튼은 대화 상자의 필드를 기본값으로 재설정합니다.

StandardButton참조하세요 .

열거형 QDialogButtonBox::StandardButton
플래그 QDialogButtonBox::StandardButtons

이 열거형은 표준 버튼에 대한 플래그를 설명합니다. 각 버튼에는 정의된 ButtonRole.

상수설명
QDialogButtonBox::Ok0x00000400AcceptRole 로 정의된 "확인" 버튼입니다.
QDialogButtonBox::Open0x00002000와 함께 정의된 "열기" 버튼 AcceptRole.
QDialogButtonBox::Save0x00000800를 사용하여 정의된 "저장" 버튼 AcceptRole.
QDialogButtonBox::Cancel0x00400000RejectRole 로 정의된 "취소" 버튼.
QDialogButtonBox::Close0x00200000RejectRole 로 정의된 "닫기" 버튼.
QDialogButtonBox::Discard0x00800000플랫폼에 따라 DestructiveRole 로 정의된 "삭제" 또는 "저장 안 함" 버튼.
QDialogButtonBox::Apply0x02000000ApplyRole 로 정의된 "적용" 버튼.
QDialogButtonBox::Reset0x04000000ResetRole 로 정의된 "재설정" 버튼.
QDialogButtonBox::RestoreDefaults0x08000000ResetRole 로 정의된 "기본값 복원" 버튼.
QDialogButtonBox::Help0x01000000HelpRole 로 정의된 "도움말" 버튼.
QDialogButtonBox::SaveAll0x00001000AcceptRole 로 정의된 "모두 저장" 버튼.
QDialogButtonBox::Yes0x00004000YesRole 로 정의된 "예" 버튼.
QDialogButtonBox::YesToAll0x00008000와 함께 정의된 "예, 모두" 버튼 YesRole.
QDialogButtonBox::No0x00010000와 함께 정의된 "아니요" 버튼 NoRole.
QDialogButtonBox::NoToAll0x00020000와 함께 정의된 "아니요 - 모두" 버튼 NoRole.
QDialogButtonBox::Abort0x00040000와 함께 정의된 "중단" 버튼 RejectRole.
QDialogButtonBox::Retry0x00080000AcceptRole 로 정의된 "재시도" 버튼.
QDialogButtonBox::Ignore0x00100000와 함께 정의된 "무시" 버튼 AcceptRole.
QDialogButtonBox::NoButton0x00000000유효하지 않은 버튼입니다.

StandardButtons 유형은 QFlags<StandardButton>에 대한 typedef입니다. StandardButton 값의 OR 조합을 저장합니다.

ButtonRolestandardButtons참조하십시오 .

속성 문서

centerButtons : bool

이 속성은 버튼 상자의 버튼이 가운데에 있는지 여부를 저장합니다.

기본적으로 이 속성은 false 입니다. 이 동작은 대부분의 대화 상자 유형에 적합합니다. 주목할 만한 예외는 버튼 상자가 가로로 가운데에 있는 대부분의 플랫폼(예: Windows)의 메시지 상자입니다.

기능에 접근합니다:

bool centerButtons() const
void setCenterButtons(bool center)

QMessageBox참조하세요 .

orientation : Qt::Orientation

이 속성은 버튼 상자의 방향을 유지합니다.

기본적으로 방향은 가로입니다(즉, 버튼이 나란히 배치됨). 가능한 방향은 Qt::HorizontalQt::Vertical 입니다.

기능에 접근합니다:

Qt::Orientation orientation() const
void setOrientation(Qt::Orientation orientation)

standardButtons : StandardButtons

버튼 상자의 표준 버튼 모음

이 속성은 버튼 상자에서 사용할 표준 버튼을 제어합니다.

기능에 액세스합니다:

QDialogButtonBox::StandardButtons standardButtons() const
void setStandardButtons(QDialogButtonBox::StandardButtons buttons)

addButton()도 참조하세요 .

멤버 함수 문서

QDialogButtonBox::QDialogButtonBox(QWidget *parent = nullptr)

주어진 parent 으로 빈 가로 버튼 상자를 만듭니다.

orientationaddButton()도 참조하세요 .

[explicit] QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr)

buttons 에 지정된 표준 버튼이 포함된 parent 으로 가로 버튼 상자를 만듭니다.

orientationaddButton()도 참조하세요 .

QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr)

주어진 orientationparent 로 빈 버튼 상자를 만듭니다.

orientationaddButton()도 참조하세요 .

QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr)

주어진 orientationparent 으로 buttons 에 지정된 표준 버튼을 포함하는 버튼 상자를 생성합니다.

orientationaddButton()도 참조하세요 .

[virtual noexcept] QDialogButtonBox::~QDialogButtonBox()

버튼 상자를 파괴합니다.

[signal] void QDialogButtonBox::accepted()

이 신호는 AcceptRole 또는 YesRole 으로 정의된 경우 버튼 상자 안의 버튼을 클릭할 때 발생합니다.

rejected(), clicked() 및 helpRequested()도 참조하세요 .

QPushButton *QDialogButtonBox::addButton(QDialogButtonBox::StandardButton button)

표준 button 이 유효하면 버튼 상자에 추가하고 푸시 버튼을 반환합니다. button 가 유효하지 않으면 버튼 상자에 추가되지 않고 0이 반환됩니다.

removeButton() 및 clear()도 참조하세요 .

void QDialogButtonBox::addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role)

지정된 button 을 지정된 role 과 함께 버튼 상자에 추가합니다. 역할이 유효하지 않으면 버튼이 추가되지 않습니다.

버튼이 이미 추가된 경우 버튼이 제거되고 새 역할로 다시 추가됩니다.

참고: 버튼 상자는 버튼의 소유권을 갖습니다.

removeButton() 및 clear()도 참조하세요 .

QPushButton *QDialogButtonBox::addButton(const QString &text, QDialogButtonBox::ButtonRole role)

지정된 text 으로 푸시 버튼을 생성하고 지정된 role 의 버튼 상자에 추가한 다음 해당 푸시 버튼을 반환합니다. role 가 유효하지 않으면 버튼이 생성되지 않고 0이 반환됩니다.

removeButton() 및 clear()도 참조하세요 .

QPushButton *QDialogButtonBox::button(QDialogButtonBox::StandardButton which) const

표준 버튼에 해당하는 QPushButton which , 또는 이 버튼 상자에 표준 버튼이 없는 경우 nullptr 를 반환합니다.

standardButton(), standardButtons() 및 buttons()도 참조하세요 .

QDialogButtonBox::ButtonRole QDialogButtonBox::buttonRole(QAbstractButton *button) const

지정된 button 에 대한 버튼 역할을 반환합니다. buttonnullptr 이거나 버튼 상자에 추가되지 않은 경우 이 함수는 InvalidRole 을 반환합니다.

buttons() 및 addButton()도 참조하세요 .

QList<QAbstractButton *> QDialogButtonBox::buttons() const

버튼 상자에 추가된 모든 버튼의 목록을 반환합니다.

buttonRole(), addButton() 및 removeButton()도 참조하세요 .

[override virtual protected] void QDialogButtonBox::changeEvent(QEvent *event)

다시 구현합니다: QWidget::changeEvent(QEvent * 이벤트).

void QDialogButtonBox::clear()

버튼 상자를 지우고 그 안의 모든 버튼을 삭제합니다.

removeButton() 및 addButton()도 참조하세요 .

[signal] void QDialogButtonBox::clicked(QAbstractButton *button)

이 신호는 버튼 상자 안의 버튼을 클릭할 때 발생합니다. 누른 특정 버튼은 button 으로 지정됩니다.

accepted(), rejected() 및 helpRequested()도 참조하세요 .

[override virtual protected] bool QDialogButtonBox::event(QEvent *event)

다시 구현합니다: QWidget::event(QEvent * 이벤트).

[signal] void QDialogButtonBox::helpRequested()

이 신호는 버튼 상자 안의 버튼이 클릭될 때 발생하며, HelpRole 으로 정의된 경우에만 발생합니다.

accepted(), rejected() 및 clicked()도 참조하세요 .

[signal] void QDialogButtonBox::rejected()

이 신호는 RejectRole 또는 NoRole 으로 정의된 경우 버튼 상자 안의 버튼을 클릭할 때 발생합니다.

accepted(), helpRequested() 및 clicked()도 참조하세요 .

void QDialogButtonBox::removeButton(QAbstractButton *button)

버튼 상자에서 button 을 삭제하지 않고 제거하고 그 부모를 0으로 설정합니다.

clear(), buttons() 및 addButton()도 참조하세요 .

QDialogButtonBox::StandardButton QDialogButtonBox::standardButton(QAbstractButton *button) const

지정된 button, 또는 지정된 button 이 표준 버튼이 아닌 경우 NoButton 에 해당하는 표준 버튼 열거형 값을 반환합니다.

button(), buttons(), standardButtons()도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.