QPushButton Class

QPushButton 위젯은 명령 버튼을 제공합니다. 더 보기...

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

QCommandLinkButton

속성

공용 함수

QPushButton(QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
virtual ~QPushButton()
bool autoDefault() const
bool isDefault() const
bool isFlat() const
QMenu *menu() const
void setAutoDefault(bool)
void setDefault(bool)
void setFlat(bool)
void setMenu(QMenu *menu)

재구현된 공용 함수

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

공개 슬롯

void showMenu()

보호된 함수

virtual void initStyleOption(QStyleOptionButton *option) const

재구현된 보호 함수

virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual bool hitButton(const QPoint &pos) const override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

상세 설명

푸시 버튼 또는 명령 버튼은 모든 그래픽 사용자 인터페이스에서 가장 일반적으로 사용되는 위젯입니다. 버튼을 누르면(클릭하면) 컴퓨터가 어떤 작업을 수행하도록 명령하거나 질문에 답할 수 있습니다. 일반적인 버튼은 확인, 적용, 취소, 닫기, 예, 아니요 및 도움말입니다.

명령 버튼은 직사각형이며 일반적으로 해당 작업을 설명하는 텍스트 레이블이 표시됩니다. 단축키는 텍스트 앞에 원하는 문자를 앰퍼샌드와 함께 입력하여 지정할 수 있습니다. 예를 들어

QPushButton *button = new QPushButton("&Download", this);

이 예에서 바로 가기 키는 Alt+D입니다. 자세한 내용은 QShortcut 문서를 참조하세요(실제 앰퍼샌드를 표시하려면 '&&'를 사용하세요).

푸시 버튼은 텍스트 레이블과 선택적으로 작은 아이콘을 표시합니다. 생성자를 사용하여 설정하고 나중에 setText() 및 setIcon()를 사용하여 변경할 수 있습니다. 버튼이 비활성화되면 텍스트와 아이콘의 모양이 GUI 스타일에 따라 조작되어 버튼이 "비활성화"된 것처럼 보이게 됩니다.

푸시 버튼은 마우스, 스페이스바 또는 키보드 단축키에 의해 활성화되면 clicked() 신호를 방출합니다. 이 신호에 연결하여 버튼의 동작을 수행합니다. 푸시 버튼은 pressed() 및 released()와 같이 덜 일반적으로 사용되는 신호도 제공합니다.

대화 상자의 명령 버튼은 기본적으로 자동 기본 버튼, 즉 키보드 입력 포커스를 받으면 자동으로 기본 푸시 버튼이 됩니다. 기본 버튼은 사용자가 대화 상자에서 Enter 또는 Return 키를 누르면 활성화되는 푸시 버튼입니다. setAutoDefault ()를 사용하여 이를 변경할 수 있습니다. 자동 기본 버튼은 기본 버튼 표시기를 그리는 데 필요한 약간의 여분의 공간을 확보합니다. 버튼 주변에 이 공간을 원하지 않으면 setAutoDefault(false)를 호출하세요.

버튼 위젯은 매우 중심적인 역할을 하기 때문에 지난 10년 동안 수많은 변형을 수용할 수 있도록 성장해 왔습니다. Microsoft 스타일 가이드에는 현재 약 10가지 상태의 Windows 푸시 버튼이 표시되어 있으며, 모든 기능의 조합을 고려하면 수십 가지가 더 있음을 암시하는 텍스트가 있습니다.

가장 중요한 모드 또는 상태는 다음과 같습니다:

  • 사용 가능 여부(회색으로 표시됨, 비활성화됨).
  • 표준 푸시 버튼, 토글 푸시 버튼 또는 메뉴 버튼.
  • 켜짐 또는 꺼짐(토글 푸시 버튼에만 해당).
  • 기본 또는 일반. 대화 상자의 기본 버튼은 일반적으로 Enter 또는 Return 키를 사용하여 '클릭'할 수 있습니다.
  • 자동 반복 여부.
  • 눌렀는지 여부.

일반적으로 애플리케이션이나 대화창이 사용자가 클릭할 때 작업을 수행하는 경우(예: 적용, 취소, 닫기 및 도움말) 위젯이 텍스트 레이블이 있는 넓은 직사각형 모양이어야 하는 경우 푸시 버튼을 사용합니다. 작업을 수행하지 않고 창의 상태를 변경하는 작은 정사각형 버튼(예: QFileDialog)의 오른쪽 상단에 있는 버튼)은 명령 버튼이 아니라 도구 버튼입니다. Qt는 이러한 버튼을 위한 특수 클래스(QToolButton)를 제공합니다.

토글 동작( setCheckable() 참조)이나 스크롤 막대의 화살표처럼 눌렀을 때 활성화 신호를 자동으로 반복하는 버튼( setAutoRepeat() 참조)이 필요한 경우 명령 버튼은 원하는 것이 아닐 수 있습니다. 확실하지 않은 경우에는 도구 버튼을 사용하세요.

참고: macOS에서는 푸시 버튼의 너비가 50보다 작아지거나 높이가 30보다 작아지면 버튼의 모서리가 원형에서 사각형으로 변경됩니다. setMinimumSize () 함수를 사용하면 이 동작을 방지할 수 있습니다.

명령 버튼의 변형은 메뉴 버튼입니다. 메뉴 버튼은 하나의 명령만 제공하는 것이 아니라 여러 개의 명령이 제공되므로 클릭하면 옵션 메뉴가 팝업됩니다. setMenu () 메서드를 사용하여 팝업 메뉴를 푸시 버튼과 연결할 수 있습니다.

다른 버튼 클래스로는 옵션 버튼( QRadioButton 참조)과 체크 박스( QCheckBox 참조)가 있습니다.

Qt에서 QAbstractButton 베이스 클래스는 대부분의 모드와 기타 API를 제공하며, QPushButton은 GUI 로직을 제공합니다. API에 대한 자세한 내용은 QAbstractButton 을 참조하세요.

QToolButton, QRadioButton, QCheckBox참조하세요 .

속성 문서

autoDefault : bool

이 속성은 푸시 버튼이 자동 기본 버튼인지 여부를 보유합니다.

이 속성이 true로 설정되어 있으면 푸시 버튼이 자동 기본 버튼이 됩니다.

일부 GUI 스타일에서는 기본 버튼 주위에 최대 3 픽셀 이상의 추가 프레임이 그려집니다. 즉, 자동 기본 버튼은 약간 더 큰 크기의 힌트를 가질 수 있는 자동 기본 버튼 주위에 이 공간을 자동으로 비워둡니다.

이 속성의 기본값은 QDialog 부모가 있는 버튼의 경우 참이고, 그렇지 않으면 기본값은 거짓입니다.

default 및 자동 기본값이 상호 작용하는 방식에 대한 자세한 내용은 default 속성을 참조하세요.

함수 액세스:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

이 속성은 푸시 버튼이 기본 버튼인지 여부를 보유합니다.

기본 버튼과 자동 기본값 버튼은 사용자가 대화 상자에서 엔터 키를 누를 때 발생하는 동작을 결정합니다.

이 속성이 true로 설정된 버튼(즉, 대화 상자의 기본 버튼)은 사용자가 엔터 키를 누를 때 자동으로 누릅니다. 단, autoDefault 버튼에 현재 초점이 있는 경우 autoDefault 버튼이 눌러지는 한 가지 예외가 있습니다. 대화 상자에 autoDefault 버튼이 있지만 기본 버튼이 없는 경우 Enter 키를 누르면 현재 초점이 있는 autoDefault 버튼 또는 초점이 있는 버튼이 없는 경우 포커스 체인에서 다음 autoDefault 버튼이 눌립니다.

대화 상자에서는 한 번에 하나의 푸시 버튼만 기본 버튼이 될 수 있습니다. 그러면 이 버튼은 추가 프레임과 함께 표시됩니다(GUI 스타일에 따라 다름).

기본 버튼 동작은 대화 상자에서만 제공됩니다. 버튼에 초점이 있는 경우 키보드에서 스페이스바를 눌러 언제든지 버튼을 클릭할 수 있습니다.

대화 상자가 표시되는 동안 현재 기본 버튼의 기본 속성이 거짓으로 설정되어 있으면 다음에 대화 상자의 푸시 버튼이 포커스를 받을 때 새 기본값이 자동으로 할당됩니다.

이 속성의 기본값은 false입니다.

기능에 액세스합니다:

bool isDefault() const
void setDefault(bool)

flat : bool

이 속성은 버튼 테두리를 올릴지 여부를 저장합니다.

이 속성의 기본값은 false입니다. 이 속성을 설정하면 대부분의 스타일은 버튼이 눌리지 않는 한 버튼 배경을 그리지 않습니다. setAutoFillBackground()를 사용하여 QPalette::Button 브러시를 사용하여 배경이 채워지도록 할 수 있습니다.

함수에 액세스합니다:

bool isFlat() const
void setFlat(bool)

멤버 함수 문서

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

텍스트가 없는 푸시 버튼과 parent.

[explicit] QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

부모 parent 와 텍스트 text 로 푸시 버튼을 구성합니다.

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)

icontext, parent 로 푸시 버튼을 구성합니다.

C++에서 제공하는 암시적 유형 변환 덕분에 QPixmap 객체를 아이콘으로 전달할 수도 있습니다.

[virtual noexcept] QPushButton::~QPushButton()

푸시 버튼을 파괴합니다.

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

다시 구현합니다: QAbstractButton::event(QEvent *e).

[override virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)

다시 구현합니다: QAbstractButton::focusInEvent(QFocusEvent *e).

[override virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)

다시 구현합니다: QAbstractButton::focusOutEvent(QFocusEvent *e).

[override virtual protected] bool QPushButton::hitButton(const QPoint &pos) const

재구현합니다: QAbstractButton::hitButton(const QPoint &pos) const.

[virtual protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

QPushButton 의 값으로 option 을 초기화합니다. 이 메서드는 하위 클래스에 QStyleOptionButton 이 필요하지만 모든 정보를 직접 채우고 싶지 않을 때 유용합니다.

QStyleOption::initFrom()도 참조하세요 .

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

다시 구현합니다: QAbstractButton::keyPressEvent(QKeyEvent *e).

버튼의 연결된 팝업 메뉴를 반환하거나 팝업 메뉴가 설정되지 않은 경우 nullptr 을 반환합니다.

setMenu()도 참조하세요 .

[override virtual] QSize QPushButton::minimumSizeHint() const

속성에 대한 액세스 함수를 다시 구현합니다: QWidget::minimumSizeHint.

[override virtual protected] void QPushButton::mouseMoveEvent(QMouseEvent *e)

다시 구현합니다: QAbstractButton::mouseMoveEvent(QMouseEvent *e).

[override virtual protected] void QPushButton::paintEvent(QPaintEvent *)

다시 구현합니다: QAbstractButton::paintEvent(QPaintEvent *e).

void QPushButton::setMenu(QMenu *menu)

팝업 메뉴 menu 를 이 푸시 버튼과 연결합니다. 이렇게 하면 버튼이 메뉴 버튼으로 바뀌며, 일부 스타일에서는 버튼 텍스트 오른쪽에 작은 삼각형이 생성됩니다.

메뉴의 소유권은 푸시 버튼으로 이전되지 않습니다.

Screenshot of a Fusion style push button with popup menu.

퓨전 위젯 스타일로 표시된 팝업 메뉴가 있는 푸시 버튼입니다.

menu()도 참조하세요 .

[slot] void QPushButton::showMenu()

관련 팝업 메뉴를 표시(팝업)합니다. 해당 메뉴가 없는 경우 이 함수는 아무 작업도 수행하지 않습니다. 이 함수는 사용자가 팝업 메뉴를 닫을 때까지 반환되지 않습니다.

[override virtual] QSize QPushButton::sizeHint() const

속성에 대한 액세스 함수를 다시 구현합니다: QWidget::sizeHint.

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