이 페이지에서

QMessageBox Class

QMessageBox 클래스는 사용자에게 정보를 제공하거나 질문을 던지고 답변을 받기 위한 모달 대화 상자를 제공합니다. 더 보기...

헤더: #include <QMessageBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속: QDialog

공개 유형

enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
enum Icon { NoIcon, Question, Information, Warning, Critical }
(since 6.6) enum class Option { DontUseNativeDialog }
flags Options
enum StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask }
flags StandardButtons

속성

공개 함수

QMessageBox(QWidget *parent = nullptr)
QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)
virtual ~QMessageBox()
void addButton(QAbstractButton *button, QMessageBox::ButtonRole role)
QPushButton *addButton(QMessageBox::StandardButton button)
QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role)
QAbstractButton *button(QMessageBox::StandardButton which) const
QMessageBox::ButtonRole buttonRole(QAbstractButton *button) const
QList<QAbstractButton *> buttons() const
QCheckBox *checkBox() const
QAbstractButton *clickedButton() const
QPushButton *defaultButton() const
QString detailedText() const
QAbstractButton *escapeButton() const
QMessageBox::Icon icon() const
QPixmap iconPixmap() const
QString informativeText() const
void open(QObject *receiver, const char *member)
QMessageBox::Options options() const
void removeButton(QAbstractButton *button)
void setCheckBox(QCheckBox *cb)
void setDefaultButton(QMessageBox::StandardButton button)
void setDefaultButton(QPushButton *button)
void setDetailedText(const QString &text)
void setEscapeButton(QAbstractButton *button)
void setEscapeButton(QMessageBox::StandardButton button)
void setIcon(QMessageBox::Icon)
void setIconPixmap(const QPixmap &pixmap)
void setInformativeText(const QString &text)
(since 6.6) void setOption(QMessageBox::Option option, bool on = true)
void setOptions(QMessageBox::Options options)
void setStandardButtons(QMessageBox::StandardButtons buttons)
void setText(const QString &text)
void setTextFormat(Qt::TextFormat format)
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
void setWindowModality(Qt::WindowModality windowModality)
void setWindowTitle(const QString &title)
QMessageBox::StandardButton standardButton(QAbstractButton *button) const
QMessageBox::StandardButtons standardButtons() const
(since 6.6) bool testOption(QMessageBox::Option option) const
QString text() const
Qt::TextFormat textFormat() const
Qt::TextInteractionFlags textInteractionFlags() const

공개 슬롯

virtual int exec() override

신호

void buttonClicked(QAbstractButton *button)

정적 공용 멤버

void about(QWidget *parent, const QString &title, const QString &text)
void aboutQt(QWidget *parent, const QString &title = QString())
QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

재구현된 보호 함수

virtual void changeEvent(QEvent *ev) override
virtual void closeEvent(QCloseEvent *e) override
virtual bool event(QEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void showEvent(QShowEvent *e) override

매크로

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

상세 설명

메시지 상자는 사용자에게 상황을 알리기 위한 기본 메시지( text ), 상황을 더 자세히 설명하기 위한 추가 메시지( informative text ), 그리고 사용자가 요청할 경우 더 많은 데이터를 제공하기 위한 선택적 메시지( detailed text )를 표시합니다.

메시지 상자는 또한 사용자의 응답을 수락하기 위해 icon 와 standard buttons 를 표시할 수도 있습니다.

parent 매개변수는 선택 사항이지만, 이를 지정하면 창 관리자에게 힌트를 제공하여 위치 조정을 처리하고 대화 상자의 적절한 중첩 순서를 유지할 수 있습니다.

QMessageBox를 사용하는 데는 속성 기반 API와 정적 함수, 두 가지 API가 제공됩니다. 정적 함수 중 하나를 호출하는 것이 더 간단한 방법이지만, 속성 기반 API를 사용하는 것보다 유연성이 떨어지며 결과도 정보가 부족합니다. 속성 기반 API를 사용하는 것이 권장됩니다.

속성 기반 API

속성 기반 API를 사용하려면 QMessageBox의 인스턴스를 생성하고, 원하는 속성을 설정한 다음, exec()를 호출하여 메시지를 표시합니다. 가장 간단한 구성은 message text 속성만 설정하는 것입니다.

QMessageBox msgBox(this);
msgBox.setText("The document has been modified.");
msgBox.exec();

사용자는 메시지 상자를 닫으려면 OK 버튼을 클릭해야 합니다. 메시지 상자가 닫힐 때까지 나머지 GUI는 차단됩니다.

간단한 메시지와 ‘확인’ 버튼이 있는 메시지 상자

단순히 사용자에게 이벤트를 알리는 것보다, 해당 이벤트에 대해 어떻게 처리할지 사용자에게 묻는 것이 더 나은 접근 방식입니다.

standard buttons 속성을 사용자의 응답으로 원하는 버튼 집합으로 설정하십시오. 버튼은 StandardButtons 의 값들을 비트별 OR 연산자를 사용하여 조합하여 지정합니다. 버튼의 표시 순서는 플랫폼에 따라 다릅니다. 예를 들어, Windows에서는 Save 가 Cancel 의 왼쪽에 표시되는 반면, macOS에서는 순서가 반대로 표시됩니다. 표준 버튼 중 하나를 default button 로 지정하십시오.

informative text 속성을 사용하여 사용자가 적절한 동작을 선택하는 데 도움이 되는 추가적인 컨텍스트를 제공할 수 있습니다.

QMessageBox msgBox(this);
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();

“저장”, “저장 안 함”, “취소” 버튼이 있는 메시지 상자

exec() 슬롯은 클릭된 버튼의 ' StandardButtons ' 값을 반환합니다.

switch (ret) {
    case QMessageBox::Save:
        // Save was clicked
        break;
    case QMessageBox::Discard:
        // Don't Save was clicked
        break;
    case QMessageBox::Cancel:
        // Cancel was clicked
        break;
    default:
        // should never be reached
        break;
}

사용자가 적절한 동작을 선택하는 데 도움이 되는 더 많은 정보를 제공하려면 ` detailed text ` 속성을 설정하십시오. 플랫폼에 따라 ` detailed text`을 표시하려면 사용자가 ` Show Details... ` 버튼을 클릭해야 할 수도 있습니다.

“세부 정보 보기...” 버튼이 있는 메시지 상자 저장

Show Details... 버튼을 클릭하면 상세 텍스트가 표시됩니다.

상세 내용이 표시된 메시지 상자 저장

서식 있는 텍스트 및 텍스트 서식 속성

detailed text 속성은 항상 일반 텍스트로 해석됩니다. main text 및 informative text 속성은 일반 텍스트이거나 서식 있는 텍스트일 수 있습니다. 이러한 문자열은 text format 속성의 설정에 따라 해석됩니다. 기본 설정은 auto-text 입니다.

XML 메타 문자가 포함된 일부 일반 텍스트 문자열의 경우, 자동 텍스트 변환 rich text detection test 이 실패하여 일반 텍스트 문자열이 리치 텍스트로 잘못 해석될 수 있습니다. 이러한 드문 경우에는 Qt::convertFromPlainText()을 사용하여 일반 텍스트 문자열을 시각적으로 동등한 리치 텍스트 문자열로 변환하거나, setTextFormat()을 사용하여 text format 속성을 명시적으로 설정하십시오.

중요도 수준 및 Icon 및 Pixmap 속성

QMessageBox는 네 가지 사전 정의된 메시지 심각도 수준(또는 메시지 유형)을 지원하며, 이들 간의 차이는 실제로 각 메시지가 표시하는 사전 정의된 아이콘에 불과합니다. icon 속성을 predefined icons 중 하나로 설정하여 네 가지 사전 정의된 메시지 유형 중 하나를 지정하십시오. 다음 규칙은 지침입니다:

물음표 아이콘

Question정상적인 작업 중 질문을 할 때 사용합니다.

정보 아이콘

Information정상적인 작동에 대한 정보를 알릴 때 사용합니다.

경고 아이콘

Warning비중요 오류를 알리는 경우.

중대한 문제 아이콘

Critical중대한 오류를 보고할 때 사용합니다.

Predefined icons 는 QMessageBox에 의해 정의된 것이 아니라 스타일에 의해 제공됩니다. 기본값은 No Icon 입니다. 그 외의 경우 메시지 상자는 모든 경우에 동일합니다. 표준 아이콘을 사용할 때는 표에 권장된 아이콘을 사용하거나, 해당 플랫폼의 스타일 지침에서 권장하는 아이콘을 사용하십시오. 표준 아이콘 중 메시지 상자에 적합한 것이 없는 경우, icon 속성을 설정하는 대신 icon pixmap 속성을 설정하여 사용자 지정 아이콘을 사용할 수 있습니다.

요약하면, 아이콘을 설정하려면 표준 아이콘 중 하나를 사용하려면 ` setIcon()`를, 사용자 정의 아이콘을 사용하려면 ` setIconPixmap()`를 호출하십시오.

정적 함수 API

정적 함수 API를 사용하여 메시지 상자를 만드는 것은 편리하지만, 정적 함수 시그니처에는 informative text 및 detailed text 속성을 설정하는 매개변수가 없기 때문에 속성 기반 API를 사용하는 것보다 유연성이 떨어집니다. 이에 대한 한 가지 해결책은 title 매개변수를 메시지 상자의 본문으로, text 매개변수를 메시지 상자의 설명 텍스트로 사용하는 것이었습니다. 이는 메시지 상자의 가독성을 떨어뜨린다는 명백한 단점이 있으므로, 플랫폼 지침에서는 이를 권장하지 않습니다. Microsoft Windows 사용자 인터페이스 지침에서는 ` application name `를 ` window's title`로 사용할 것을 권장합니다. 즉, 본문 텍스트 외에 설명 텍스트가 있는 경우, 이를 ` text ` 매개변수에 연결해야 합니다.

버튼 매개변수와 관련하여 정적 함수의 시그니처가 변경되었음을 유의하십시오. 이제 이 매개변수들은 standard buttons 및 default button 를 설정하는 데 사용됩니다.

information(), question(), warning() 및 critical() 메시지 상자를 생성하는 데 사용할 수 있는 정적 함수가 있습니다.

int ret = QMessageBox::warning(this, tr("My Application"),
                               tr("The document has been modified.\n"
                                  "Do you want to save your changes?"),
                               QMessageBox::Save | QMessageBox::Discard
                               | QMessageBox::Cancel,
                               QMessageBox::Save);

'Standard Dialogs' 예제에서는 QMessageBox 및 기타 내장 Qt 대화 상자를 사용하는 방법을 보여줍니다.

고급 사용법

standard buttons ButtonRole 가 메시지 상자에 필요한 유연성을 충분히 제공하지 않는 경우, 텍스트와 사용자 정의 버튼 배열을 지정하는 ` ()` 오버로드를 사용하여 사용자 정의 버튼을 추가할 수 있습니다. ` `는 QMessageBox가 화면상의 버튼 순서(플랫폼에 따라 다름)를 결정하는 데 사용됩니다. ` ()`를 호출한 후 ` ()`의 값을 확인할 수 있습니다. 예를 들어, addButton ButtonRole exec clickedButton

QMessageBox msgBox(this);
QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);

msgBox.exec();

if (msgBox.clickedButton() == connectButton) {
    // connect
} else if (msgBox.clickedButton() == abortButton) {
    // abort
}

기본 및 Escape 키

기본 버튼(즉, Enter 키를 누를 때 활성화되는 버튼)은 setDefaultButton()을 사용하여 지정할 수 있습니다. 기본 버튼이 지정되지 않은 경우, QMessageBox는 메시지 상자에 사용된 버튼의 button roles 을 기반으로 기본 버튼을 찾으려고 시도합니다.

이스케이프 버튼( Esc 가 눌렸을 때 활성화되는 버튼)은 setEscapeButton()를 사용하여 지정할 수 있습니다. 이스케이프 버튼이 지정되지 않은 경우, QMessageBox는 다음 규칙을 사용하여 해당 버튼을 찾으려고 시도합니다:

  1. 버튼이 하나뿐인 경우, ` Esc ` 키를 누를 때 활성화되는 버튼이 에스케이프 버튼이 됩니다.
  2. Cancel 버튼이 있는 경우, Esc 이 눌렸을 때 활성화되는 버튼이 에스케이프 버튼으로 지정됩니다.
  3. the Reject role 또는 the No role 중 하나를 가진 버튼이 정확히 하나 있는 경우, Esc 를 누를 때 활성화되는 버튼이 됩니다.

이러한 규칙을 적용해도 탈출 버튼을 확인할 수 없는 경우, Esc 를 눌러도 아무런 효과가 없습니다.

QDialogButtonBox 및 ‘표준 대화 상자 예제’도 참조하십시오 .

멤버 유형 문서

enum QMessageBox::ButtonRole

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

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

StandardButton도 참조하십시오 .

enum QMessageBox::Icon

이 열거형에는 다음과 같은 값들이 있습니다:

상수값설명
QMessageBox::NoIcon0메시지 상자에 아이콘이 없습니다.
QMessageBox::Question4메시지가 질문을 하고 있음을 나타내는 아이콘입니다.
QMessageBox::Information1메시지가 특별한 내용이 아님을 나타내는 아이콘.
QMessageBox::Warning2메시지가 경고이지만 처리할 수 있음을 나타내는 아이콘.
QMessageBox::Critical3메시지가 심각한 문제를 나타냄을 나타내는 아이콘.

[since 6.6] enum class QMessageBox::Option
flags QMessageBox::Options

상수값설명
QMessageBox::Option::DontUseNativeDialog0x00000001기본 메시지 대화 상자를 사용하지 마십시오.

이 열거형은 Qt 6.6에서 도입되었습니다.

Options 유형은 QFlags<Option>에 대한 typedef입니다. 이 유형은 Option 값들의 OR 조합을 저장합니다.

enum QMessageBox::StandardButton
flags QMessageBox::StandardButtons

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

상수값설명
QMessageBox::Ok0x00000400AcceptRole 로 정의된 "OK" 버튼.
QMessageBox::Open0x00002000AcceptRole 로 정의된 "열기" 버튼.
QMessageBox::Save0x00000800AcceptRole 로 정의된 "Save" 버튼.
QMessageBox::Cancel0x00400000RejectRole 로 정의된 "취소" 버튼.
QMessageBox::Close0x00200000RejectRole 로 정의된 "닫기" 버튼.
QMessageBox::Discard0x00800000플랫폼에 따라 "취소" 또는 "저장하지 않음" 버튼으로, DestructiveRole 로 정의됩니다.
QMessageBox::Apply0x02000000ApplyRole 로 정의된 "적용" 버튼.
QMessageBox::Reset0x04000000ResetRole 로 정의된 "Reset" 버튼.
QMessageBox::RestoreDefaults0x08000000ResetRole 으로 정의된 “기본값 복원” 버튼.
QMessageBox::Help0x01000000HelpRole 로 정의된 “도움말” 버튼.
QMessageBox::SaveAll0x00001000AcceptRole 로 정의된 "모두 저장" 버튼.
QMessageBox::Yes0x00004000YesRole 로 정의된 "예" 버튼.
QMessageBox::YesToAll0x00008000YesRole 로 정의된 "모두 예" 버튼.
QMessageBox::No0x00010000NoRole 으로 정의된 "아니요" 버튼.
QMessageBox::NoToAll0x00020000NoRole 로 정의된 “모두 아니오” 버튼.
QMessageBox::Abort0x00040000RejectRole 로 정의된 "중단" 버튼.
QMessageBox::Retry0x00080000AcceptRole 로 정의된 "Retry" 버튼.
QMessageBox::Ignore0x00100000AcceptRole 으로 정의된 "무시" 버튼.
QMessageBox::NoButton0x00000000유효하지 않은 버튼입니다.

다음 값들은 더 이상 사용되지 않습니다:

상수값설명
QMessageBox::YesAllYesToAll대신 YesToAll을 사용하십시오.
QMessageBox::NoAllNoToAll대신 NoToAll을 사용하십시오.
QMessageBox::Default0x00000100대신 information(), warning() 등의 defaultButton 인수를 사용하거나, setDefaultButton()를 호출하십시오.
QMessageBox::Escape0x00000200대신 setEscapeButton()을 호출하십시오.
QMessageBox::FlagMask0x00000300 
QMessageBox::ButtonMask~FlagMask 

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

ButtonRole 및 standardButtons도 참조하십시오 .

속성 설명서

detailedText : QString

이 속성은 세부 정보 영역에 표시될 텍스트를 저장합니다.

이 텍스트는 일반 텍스트로 해석됩니다.

기본적으로 이 속성은 빈 문자열을 포함합니다.

액세스 함수:

QString detailedText() const
void setDetailedText(const QString &text)

QMessageBox::text 및 QMessageBox::informativeText도 참조하십시오 .

icon : Icon

이 속성은 메시지 상자의 아이콘을 지정합니다.

메시지 상자의 아이콘은 다음 값 중 하나로 지정할 수 있습니다:

기본값은 QMessageBox::NoIcon 입니다.

실제 아이콘을 표시하는 데 사용되는 픽스맵은 현재 GUI style 에 따라 달라집니다. 또한 icon pixmap 속성을 설정하여 아이콘에 대한 사용자 정의 픽스맵을 지정할 수도 있습니다.

관련 함수:

QMessageBox::Icon icon() const
void setIcon(QMessageBox::Icon)

iconPixmap도 참조하십시오 .

iconPixmap : QPixmap

이 속성은 현재 아이콘을 저장합니다.

메시지 상자에서 현재 사용 중인 아이콘입니다. 모든 GUI 스타일에 어울리는 단일 픽스맵을 그리는 것은 종종 어렵다는 점에 유의하십시오. 플랫폼마다 다른 픽스맵을 지정하는 것이 좋습니다.

기본적으로 이 속성은 정의되어 있지 않습니다.

액세스 함수:

QPixmap iconPixmap() const
void setIconPixmap(const QPixmap &pixmap)

icon도 참조하십시오 .

informativeText : QString

이 속성은 메시지에 대한 보다 자세한 설명을 제공하는 설명 텍스트를 포함합니다.

설명용 텍스트는 text()를 보완하여 사용자에게 더 많은 정보를 제공하는 데 사용할 수 있습니다. 예를 들어, 해당 상황이 초래할 결과를 설명하거나 대안적인 해결책을 제안하는 경우 등이 있습니다.

이 텍스트는 텍스트 형식 설정(QMessageBox::textFormat)에 따라 일반 텍스트 또는 서식 있는 텍스트로 해석됩니다. 기본 설정은 Qt::AutoText 이며, 즉 메시지 상자가 텍스트 형식을 자동으로 감지하려고 시도합니다.

기본적으로 이 속성은 빈 문자열을 포함합니다.

액세스 함수:

QString informativeText() const
void setInformativeText(const QString &text)

textFormat, QMessageBox::text 및 QMessageBox::detailedText도 참조하십시오 .

[since 6.6] options : Options

대화 상자의 모양과 느낌에 영향을 미치는 옵션입니다.

기본적으로 이 옵션들은 비활성화되어 있습니다.

대화 상자의 속성을 변경하거나 대화 상자를 표시하기 전에 ` Option::DontUseNativeDialog ` 옵션을 설정해야 합니다.

대화 상자가 표시된 상태에서 옵션을 설정하더라도 대화 상자에 즉시 반영된다고 보장할 수는 없습니다.

다른 속성을 변경한 후에 옵션을 설정하면 해당 값이 적용되지 않을 수 있습니다.

이 열거형은 Qt 6.6에서 도입되었습니다.

액세스 함수:

QMessageBox::Options options() const
void setOptions(QMessageBox::Options options)

setOption() 및 testOption()도 참조하십시오 .

standardButtons : StandardButtons

메시지 상자의 표준 버튼 모음

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

기본적으로 이 속성에는 표준 버튼이 포함되어 있지 않습니다.

Access 함수:

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

addButton()도 참조하십시오 .

text : QString

이 속성은 표시될 메시지 상자의 텍스트를 저장합니다.

텍스트는 상황을 설명하는 간결한 문장이나 구문이어야 하며, 가급적 중립적인 진술이나 행동을 유도하는 질문 형태로 작성하는 것이 좋습니다.

텍스트는 텍스트 형식 설정(QMessageBox::textFormat)에 따라 일반 텍스트 또는 서식 있는 텍스트로 해석됩니다. 기본 설정은 Qt::AutoText 이며, 즉 메시지 상자는 텍스트의 형식을 자동으로 감지하려고 시도합니다.

이 속성의 기본값은 빈 문자열입니다.

액세스 함수:

QString text() const
void setText(const QString &text)

textFormat, QMessageBox::informativeText 및 QMessageBox::detailedText도 참조하십시오 .

textFormat : Qt::TextFormat

이 속성은 메시지 상자에 표시되는 텍스트의 형식을 지정합니다.

메시지 상자에서 현재 사용 중인 텍스트 형식입니다. 사용 가능한 옵션에 대한 설명은 Qt::TextFormat 열거형을 참조하십시오.

기본 서식은 Qt::AutoText 입니다.

Access 함수:

Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat format)

setText()도 참조하십시오 .

textInteractionFlags : Qt::TextInteractionFlags

메시지 상자의 레이블이 사용자 입력과 어떻게 상호작용해야 하는지 지정합니다.

기본값은 스타일에 따라 다릅니다.

Access 함수:

Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)

QStyle::SH_MessageBox_TextInteractionFlags도 참조하십시오 .

멤버 함수 설명서

[explicit] QMessageBox::QMessageBox(QWidget *parent = nullptr)

텍스트와 버튼이 없는 ‘ application modal ’ 메시지 상자를 생성합니다. ` parent `는 ` QDialog ` 생성자에 전달됩니다.

show()를 호출하기 전에 setWindowModality()를 통해 창 모달리티를 재정의할 수 있습니다.

참고: open() 또는 exec()을사용하여 메시지 상자를 표시하면 창 모달리티에 영향을 미칩니다. 자세한 내용은 각 함수의 상세 문서를 참조하십시오.

macOS에서 메시지 상자가 parent 의 Qt::Sheet 로 표시되도록 하려면, 메시지 상자의 window modality 를 Qt::WindowModal 로 설정하거나 open()를 사용하십시오. 그렇지 않으면 메시지 상자는 표준 대화 상자로 표시됩니다.

setWindowTitle(), setText(), setIcon(), setStandardButtons() 및 setWindowModality()도 참조하십시오 .

QMessageBox::QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)

지정된 icon, title, text 및 표준 buttons 을 사용하여 application modal 메시지 상자를 생성합니다. addButton()을 사용하여 언제든지 표준 또는 사용자 정의 버튼을 추가할 수 있습니다. parent 및 f 인수는 QDialog 생성자에 전달됩니다.

show()를 호출하기 전에 setWindowModality()을 통해 창의 모달성을 재정의할 수 있습니다.

참고: open() 또는 exec()을사용하여 메시지 상자를 표시하면 창의 모달리티에 영향을 미칩니다. 자세한 내용은 각 함수의 상세 문서를 참조하십시오.

macOS에서 parent 가 nullptr 가 아니며, 메시지 상자가 해당 부모의 Qt::Sheet 로 표시되도록 하려면 메시지 상자의 window modality 를 Qt::WindowModal (기본값)로 설정하십시오. 그렇지 않으면 메시지 상자는 표준 대화 상자로 표시됩니다.

setWindowTitle(), setText(), setIcon(), setStandardButtons() 및 setWindowModality()도 참조하십시오 .

[virtual noexcept] QMessageBox::~QMessageBox()

메시지 상자를 닫습니다.

[static] void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)

“ title ”라는 제목과 “ text ”라는 텍스트가 포함된 간단한 정보 상자를 표시합니다. 이 정보 상자의 상위 요소는 parent 입니다.

about()은 다음 네 곳에서 적합한 아이콘을 찾습니다:

  1. parent->icon()가 존재하면 이를 우선적으로 사용합니다.
  2. 존재하지 않으면, parent 를 포함하는 최상위 위젯을 시도합니다.
  3. 이 방법도 실패하면 active window.
  4. 최후의 수단으로 정보 아이콘을 사용합니다.

정보 상자에는 “OK”라고 표시된 버튼이 하나 있습니다.

macOS에서는 정보 상자가 비모달 창으로 팝업되며, 다른 플랫폼에서는 현재 애플리케이션 모달로 표시됩니다.

QWidget::windowIcon() 및 QApplication::activeWindow()도 참조하십시오 .

[static] void QMessageBox::aboutQt(QWidget *parent, const QString &title = QString())

Qt에 대한 간단한 메시지 상자를 표시하며, 지정된 title 를 사용하고, parent 를 기준으로 중앙 정렬합니다( parent 가 nullptr 가 아닌 경우). 이 메시지에는 애플리케이션에서 사용 중인 Qt의 버전 번호가 포함됩니다.

이는 ‘Menus’ 예제에서 볼 수 있듯이, 애플리케이션의 ‘ Help ’ 메뉴에 포함시키기에 유용합니다.

QApplication 이 기능을 슬롯 형태로 제공합니다.

macOS에서는 aboutQt 상자가 모달이 아닌 창으로 팝업되며, 다른 플랫폼에서는 현재 애플리케이션 모달로 표시됩니다.

QApplication::aboutQt()도 참조하십시오 .

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

지정된 button 를, 지정한 role 를 가진 메시지 상자에 추가합니다.

removeButton(), button() 및 setStandardButtons()도 참조하십시오 .

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

메시지 상자에 표준 button 를 추가할 수 있는 경우 이를 추가하고, 푸시 버튼을 반환합니다.

이 함수는 오버로드된 함수입니다.

setStandardButtons()도 참조하십시오 .

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

지정된 ` text`을 가진 버튼을 생성하고, 이를 지정된 ` role`의 메시지 상자에 추가한 후, 해당 메시지를 반환합니다.

이 함수는 오버로드된 함수입니다.

QAbstractButton *QMessageBox::button(QMessageBox::StandardButton which) const

표준 버튼 which 에 해당하는 포인터를 반환하며, 해당 메시지 상자에 표준 버튼이 없는 경우에는 nullptr 를 반환합니다.

참고: 반환된 버튼의 속성을수정해도 메시지 대화 상자의 네이티브 구현에는 반영되지 않을 수 있습니다. 대화 상자 버튼을 사용자 지정하려면 대신 custom button 또는 button title 를 추가하거나, Option::DontUseNativeDialog 옵션을 설정하십시오.

standardButtons 및 standardButton()도 참조하십시오 .

[signal] void QMessageBox::buttonClicked(QAbstractButton *button)

이 신호는 QMessageBox 내부의 버튼이 클릭될 때마다 발생합니다. 클릭된 버튼은 button 에서 반환됩니다.

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

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

buttons() 및 addButton()도 참조하십시오 .

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

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

buttonRole(), addButton() 및 removeButton()도 참조하십시오 .

[override virtual protected] void QMessageBox::changeEvent(QEvent *ev)

QWidget::changeEvent(QEvent *event)를 재구현합니다.

QCheckBox *QMessageBox::checkBox() const

대화 상자에 표시된 체크박스를 반환합니다. 체크박스가 설정되어 있지 않은 경우, 이 값은 ` nullptr `입니다.

setCheckBox()도 참조하십시오 .

QAbstractButton *QMessageBox::clickedButton() const

사용자가 클릭한 버튼을 반환하며, 사용자가 Esc 키를 눌렀고 escape button 가 설정되지 않은 경우에는 nullptr 를 반환합니다.

exec()가 아직 호출되지 않은 경우 nullptr을 반환합니다.

예시:

QMessageBox messageBox(this);
QAbstractButton *disconnectButton =
      messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole);
//...
messageBox.exec();
if (messageBox.clickedButton() == disconnectButton) {
    //...
}

standardButton() 및 button()도 참조하십시오 .

[override virtual protected] void QMessageBox::closeEvent(QCloseEvent *e)

QDialog::closeEvent(QCloseEvent *e)를 재구현합니다.

[static] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

지정된 parent 위젯 앞에, 주어진 title 및 text 를 포함하는 중요 메시지 상자를 엽니다.

표준 buttons 이 메시지 상자에 추가됩니다. defaultButton 은 Enter 이 눌렸을 때 사용될 버튼을 지정합니다. defaultButton 은 buttons 에서 지정된 버튼을 참조해야 합니다. defaultButton 이 QMessageBox::NoButton 인 경우, QMessageBox 는 자동으로 적절한 기본값을 선택합니다.

클릭된 표준 버튼의 식별자를 반환합니다. 대신 Esc 가 눌린 경우, escape button 가 반환됩니다.

메시지 상자는 application modal 대화 상자입니다.

경고: 대화상자 실행 중에는 parent 를 삭제하지마십시오 . 이를 수행하려면 QMessageBox 생성자 중 하나를 사용하여 대화상자를 직접 생성해야 합니다.

question(), warning(), information()도 참조하십시오 .

QPushButton *QMessageBox::defaultButton() const

메시지 상자의 ‘ default button ’로 지정될 버튼을 반환합니다. 기본 버튼이 설정되지 않은 경우 nullptr을 반환합니다.

setDefaultButton(), addButton(), QPushButton::setDefault()도 참조하십시오 .

QAbstractButton *QMessageBox::escapeButton() const

Esc 키를 누르면 활성화되는 버튼을 반환합니다.

기본적으로 QMessageBox 은 다음과 같이 Esc 버튼을 자동으로 감지하려고 시도합니다:

  1. 버튼이 하나뿐인 경우, 해당 버튼을 이스케이프 버튼으로 지정합니다.
  2. Cancel 역할의 버튼이 하나 있다면, 해당 버튼이 escape 버튼으로 지정됩니다.
  3. macOS에서만, 역할이 ' QMessageBox::RejectRole'인 버튼이 정확히 하나 있는 경우, 해당 버튼을 Esc 버튼으로 지정합니다.

탈출 버튼을 자동으로 감지할 수 없는 경우, ` Esc `를 누르더라도 아무런 효과가 없습니다.

setEscapeButton() 및 addButton()도 참조하십시오 .

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

QWidget::event(QEvent *event)를 재구현합니다.

[override virtual slot] int QMessageBox::exec()

QDialog::exec()을 재구현합니다.

메시지 상자를 ` modal dialog` 형태로 표시하며, 사용자가 닫을 때까지 실행을 차단합니다.

표준 버튼이 포함된 ` QMessageBox `을 사용할 경우, 이 함수는 클릭된 표준 버튼을 나타내는 ` StandardButton ` 값을 반환합니다. 사용자 정의 버튼이 포함된 ` QMessageBox `을 사용할 경우, 이 함수는 불투명한 값을 반환하므로, 어떤 버튼이 클릭되었는지 확인하려면 ` clickedButton()`를 사용하십시오.

참고: result() 함수도 QDialog::DialogCode 대신 StandardButton 값을 반환합니다.

사용자는 버튼을 클릭하거나 윈도우 시스템에서 제공하는 메커니즘을 사용하여 대화 상자를 닫기 전까지는 동일한 애플리케이션 내의 다른 창과 상호 작용할 수 없습니다.

show() 및 result()도 참조하십시오 .

[static] QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

지정된 parent 위젯 앞에, 주어진 title 및 text 가 포함된 정보 메시지 상자를 엽니다.

표준 buttons 가 메시지 상자에 추가됩니다. defaultButton 는 Enter 가 눌렸을 때 사용될 버튼을 지정합니다. defaultButton 는 buttons 에서 지정된 버튼을 참조해야 합니다. defaultButton 가 QMessageBox::NoButton 인 경우, QMessageBox 는 자동으로 적절한 기본값을 선택합니다.

클릭된 표준 버튼의 식별자를 반환합니다. 대신 Esc 가 눌린 경우, escape button 가 반환됩니다.

메시지 상자는 application modal 대화 상자입니다.

경고: 대화 상자 실행 중에는 parent 을 삭제하지마십시오 . 이를 수행하려면 QMessageBox 생성자 중 하나를 사용하여 대화 상자를 직접 생성해야 합니다.

question(), warning(), critical()도 참조하십시오 .

[override virtual protected] void QMessageBox::keyPressEvent(QKeyEvent *e)

QDialog::keyPressEvent(QKeyEvent *e)를 재구현합니다.

void QMessageBox::open(QObject *receiver, const char *member)

대화 상자를 열고, 해당 대화 상자의 finished() 또는 buttonClicked() 신호를 receiver 및 member 에서 지정한 슬롯에 연결합니다. member 에 있는 슬롯의 첫 번째 매개변수가 포인터인 경우 연결은 buttonClicked()으로 이루어지며, 그렇지 않은 경우 연결은 finished()으로 이루어집니다.

대화 상자가 닫히면 신호는 슬롯에서 분리됩니다.

[static] QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)

지정된 parent 위젯 앞에, 주어진 title 및 text 을 포함하는 질문 메시지 상자를 엽니다.

표준 buttons 가 메시지 상자에 추가됩니다. defaultButton 는 Enter 가 눌렸을 때 사용되는 버튼을 지정합니다. defaultButton 는 buttons 에서 지정된 버튼을 참조해야 합니다. defaultButton 가 QMessageBox::NoButton 인 경우, QMessageBox 는 자동으로 적절한 기본값을 선택합니다.

클릭된 표준 버튼의 식별자를 반환합니다. 대신 Esc 가 눌린 경우, escape button 가 반환됩니다.

메시지 상자는 application modal 대화 상자입니다.

경고: 대화 상자가 실행되는 동안 parent 를 삭제하지마십시오 . 이를 수행하려면 QMessageBox 생성자 중 하나를 사용하여 대화 상자를 직접 생성해야 합니다.

information(), warning() 및 critical()도 참조하십시오 .

void QMessageBox::removeButton(QAbstractButton *button)

button 를 삭제하지 않고 버튼 상자에서 제거합니다.

addButton() 및 setStandardButtons()도 참조하십시오 .

[override virtual protected] void QMessageBox::resizeEvent(QResizeEvent *event)

QDialog::resizeEvent(QResizeEvent *)를 재구현합니다.

void QMessageBox::setCheckBox(QCheckBox *cb)

메시지 대화 상자의 “ cb ” 확인란을 설정합니다. 메시지 상자가 해당 확인란에 대한 소유권을 갖게 됩니다. 인수 cb 에 nullptr 를 지정하면 메시지 상자에서 기존 확인란을 제거할 수 있습니다.

checkBox()도 참조하십시오 .

void QMessageBox::setDefaultButton(QMessageBox::StandardButton button)

메시지 상자의 ‘ default button ’ 속성을 ‘ button ’로 설정합니다.

defaultButton(), addButton() 및 QPushButton::setDefault()도 참조하십시오 .

void QMessageBox::setDefaultButton(QPushButton *button)

메시지 상자의 ` default button ` 속성을 ` button`로 설정합니다.

addButton() 및 QPushButton::setDefault()도 참조하십시오 .

void QMessageBox::setEscapeButton(QAbstractButton *button)

Escape 키를 누를 때 활성화되는 버튼을 button 로 설정합니다.

escapeButton(), addButton() 및 clickedButton()도 참조하십시오 .

void QMessageBox::setEscapeButton(QMessageBox::StandardButton button)

Escape 키를 누를 때 활성화되는 버튼을 button 로 설정합니다.

addButton() 및 clickedButton()도 참조하십시오 .

[since 6.6] void QMessageBox::setOption(QMessageBox::Option option, bool on = true)

on 가 true인 경우, 지정된 option 를 활성화하고, 그렇지 않은 경우 지정된 option 를 해제합니다.

옵션(특히 Option::DontUseNativeDialog 옵션)은 대화 상자를 표시하기 전에 설정해야 합니다.

대화 상자가 표시된 상태에서 옵션을 설정하더라도 대화 상자에 즉시 반영된다고 보장할 수는 없습니다.

다른 속성을 변경한 후에 옵션을 설정하면 이러한 값이 적용되지 않을 수 있습니다.

이 함수는 Qt 6.6에서 도입되었습니다.

options 및 testOption()도 참조하십시오 .

void QMessageBox::setWindowModality(Qt::WindowModality windowModality)

이 함수는 ` QWidget::setWindowModality()`을 오버라이드합니다.

메시지 상자의 모달리티를 ` windowModality`로 설정합니다.

macOS에서 모달리티가 ` Qt::WindowModal `로 설정되어 있고 메시지 상자에 부모가 있는 경우, 메시지 상자는 ` Qt::Sheet`가 되며, 그렇지 않은 경우 메시지 상자는 표준 대화 상자가 됩니다.

void QMessageBox::setWindowTitle(const QString &title)

이 함수는 ` QWidget::setWindowTitle()`을 오버라이드합니다.

메시지 상자의 제목을 title 로 설정합니다. macOS에서는 (macOS 가이드라인에 따라) 창 제목이 무시됩니다.

[override virtual protected] void QMessageBox::showEvent(QShowEvent *e)

QDialog::showEvent(QShowEvent *event)를 재구현합니다.

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

주어진 button 에 해당하는 표준 버튼 열거형 값을 반환하거나, 주어진 button 가 표준 버튼이 아닌 경우 NoButton 를 반환합니다.

button() 및 standardButtons()도 참조하십시오 .

[since 6.6] bool QMessageBox::testOption(QMessageBox::Option option) const

지정된 ` option `가 활성화되어 있으면 ` true `를 반환하고, 그렇지 않으면 `false`를 반환합니다.

이 함수는 Qt 6.6에서 도입되었습니다.

options 및 setOption()도 참조하십시오 .

[static] QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

지정된 parent 위젯 앞에 title 및 text 가 포함된 경고 메시지 상자를 엽니다.

표준 buttons 가 메시지 상자에 추가됩니다. defaultButton 는 Enter 가 눌렸을 때 사용될 버튼을 지정합니다. defaultButton 는 buttons 에서 지정된 버튼을 참조해야 합니다. defaultButton 가 QMessageBox::NoButton 인 경우, QMessageBox 는 자동으로 적절한 기본값을 선택합니다.

클릭된 표준 버튼의 식별자를 반환합니다. 대신 Esc 가 눌린 경우, escape button 가 반환됩니다.

메시지 상자는 application modal 대화 상자입니다.

경고: 대화 상자가 실행되는 동안 ` parent `를 삭제하지마십시오 . 이를 수행하려면 ` QMessageBox ` 생성자 중 하나를 사용하여 대화 상자를 직접 생성해야 합니다.

question(), information() 및 critical()도 참조하십시오 .

매크로 문서

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

이 매크로는 애플리케이션이 충분히 최신 버전의 Qt로 실행되도록 보장하는 데 사용할 수 있습니다. 이는 애플리케이션이 버그 수정 릴리스(예: 6.1.2)에서 도입된 특정 버그 수정 사항에 의존하는 경우 특히 유용합니다.

argc 및 argv 매개변수는 main() 함수의 argc 및 argv 매개변수와 동일합니다. version 매개변수는 애플리케이션에 필요한 Qt 버전을 지정하는 문자열 리터럴입니다(예: "6.1.2").

예시:

#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QT_REQUIRE_VERSION(argc, argv, "4.0.2")

    QApplication app(argc, argv);
    //...
    return app.exec();
}

© 2026 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.