이 페이지에서

QAbstractButton Class

QAbstractButton 클래스는 버튼 위젯의 추상 기본 클래스로, 버튼에 공통적으로 필요한 기능을 제공합니다. 더 보기...

헤더: #include <QAbstractButton>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속: QWidget
상속받는 클래스:

QCheckBox, QPushButton, QRadioButton 및 QToolButton

속성

공개 함수

QAbstractButton(QWidget *parent = nullptr)
virtual ~QAbstractButton()
bool autoExclusive() const
bool autoRepeat() const
int autoRepeatDelay() const
int autoRepeatInterval() const
QButtonGroup *group() const
QIcon icon() const
QSize iconSize() const
bool isCheckable() const
bool isChecked() const
bool isDown() const
void setAutoExclusive(bool)
void setAutoRepeat(bool)
void setAutoRepeatDelay(int)
void setAutoRepeatInterval(int)
void setCheckable(bool)
void setDown(bool)
void setIcon(const QIcon &icon)
void setShortcut(const QKeySequence &key)
void setText(const QString &text)
QKeySequence shortcut() const
QString text() const

공개 슬롯

void animateClick()
void click()
void setChecked(bool)
void setIconSize(const QSize &size)
void toggle()

신호

void clicked(bool checked = false)
void pressed()
void released()
void toggled(bool checked)

보호된 함수

virtual void checkStateSet()
virtual bool hitButton(const QPoint &pos) const
virtual void nextCheckState()

재구현된 보호된 함수

virtual void changeEvent(QEvent *e) override
virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *e) override = 0
virtual void timerEvent(QTimerEvent *e) override

상세 설명

이 클래스는 추상 버튼( abstract button)을 구현합니다. 이 클래스의 하위 클래스는 사용자 동작을 처리하고, 버튼이 어떻게 그려질지를 지정합니다.

QAbstractButton은 푸시 버튼과 체크 가능(토글) 버튼 모두를 지원합니다. 체크 가능 버튼은 QRadioButton 및 QCheckBox 클래스에서 구현됩니다. 푸시 버튼은 QPushButton 및 QToolButton 클래스에서 구현되며, 이 클래스들은 필요한 경우 토글 동작도 제공합니다.

모든 버튼은 텍스트와 아이콘이 포함된 레이블을 표시할 수 있습니다. setText()은 텍스트를 설정하고, setIcon()은 아이콘을 설정합니다. 버튼이 비활성화된 경우, 해당 버튼이 “비활성화”된 것처럼 보이도록 레이블이 변경됩니다.

버튼이 앰퍼샌드('&')가 포함된 문자열을 가진 텍스트 버튼인 경우, QAbstractButton은 자동으로 단축키를 생성합니다. 예를 들어:

QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);

Alt+C 단축키가 버튼에 할당됩니다. 즉, 사용자가 Alt+C 를 누르면 버튼은 animateClick()를 호출합니다. 자세한 내용은 QShortcut 문서를 참조하십시오. 실제 앰퍼샌드 기호를 표시하려면 '&&'를 사용하십시오.

setShortcut() 함수를 사용하여 사용자 정의 단축키를 설정할 수도 있습니다. 이 기능은 주로 텍스트가 없어 자동 단축키를 할당할 수 없는 버튼에 유용합니다.

button->setIcon(QIcon(":/images/print.png"));
button->setShortcut(tr("Alt+F7"));

Qt에서 제공하는 모든 버튼(QPushButton, QToolButton, QCheckBox, QRadioButton)은 text 및 icons 모두를 표시할 수 있습니다.

QPushButton::setDefault() 및 QPushButton::setAutoDefault()을 사용하여 대화 상자에서 특정 버튼을 기본 버튼으로 지정할 수 있습니다.

QAbstractButton은 버튼에 사용되는 대부분의 상태를 제공합니다:

  • isDown()는 버튼이 눌려 있는지를 나타냅니다.
  • isChecked()는 버튼이 선택되어 있는지 여부를 나타냅니다. 선택 가능한 버튼만 선택 및 선택 해제가 가능합니다(아래 참조).
  • isEnabled()는 사용자가 버튼을 누를 수 있는지 여부를 나타냅니다.

    참고: 다른 위젯과달리 , QAbstractButton에서 파생된 버튼은 비활성화된 상태에서도 마우스 및 컨텍스트 메뉴 이벤트를 수신합니다.

  • setAutoRepeat()는 사용자가 버튼을 길게 누를 때 버튼이 자동으로 반복될지 여부를 설정합니다. autoRepeatDelay 및 autoRepeatInterval 는 자동 반복이 어떻게 수행되는지를 정의합니다.
  • setCheckable()는 버튼이 토글 버튼인지 여부를 설정합니다.

isDown()과 isChecked()의 차이점은 다음과 같습니다. 사용자가 토글 버튼을 클릭하여 체크할 때, 버튼은 먼저 눌린 상태가 되었다가 풀리면서 체크된 상태로 전환됩니다. 사용자가 다시 클릭하여 체크를 해제할 때, 버튼은 먼저 눌린 상태로 이동한 다음 체크 해제된 상태로 이동합니다(isChecked()와 isDown()가 모두 false인 경우).

QAbstractButton은 네 가지 신호를 제공합니다:

  1. pressed()는 마우스 커서가 버튼 내부에 있는 상태에서 마우스 왼쪽 버튼이 눌렸을 때 발생합니다.
  2. released()는 마우스 커서가 버튼 내부에 있을 때 마우스 왼쪽 버튼을 누르면 발생합니다.
  3. clicked()는 버튼을 처음 눌렀다가 놓았을 때, 단축키를 입력했을 때, 또는 ` click()` 또는 ` animateClick()`가 호출되었을 때 발생합니다.
  4. toggled()는 토글 버튼의 상태가 변경될 때 발생합니다.

QAbstractButton을 서브클래스화하려면, 최소한 paintEvent()을 재구현하여 버튼의 윤곽선과 텍스트 또는 픽스맵을 그려야 합니다. 일반적으로 sizeHint()도 재구현하는 것이 좋으며, 때로는 hitButton()도 재구현해야 할 수 있습니다(버튼 누름이 버튼 내부에서 발생했는지 확인하기 위함). 두 가지 이상의 상태를 갖는 버튼(예: 3상태 버튼)의 경우, checkStateSet()과 nextCheckState()도 재정의해야 합니다.

QButtonGroup도 참조하십시오 .

속성 문서

autoExclusive : bool

이 속성은 자동 배타성 기능이 활성화되어 있는지 여부를 나타냅니다.

자동 배타성이 활성화된 경우, 동일한 상위 위젯에 속한 체크 가능한 버튼들은 마치 동일한 배타적 버튼 그룹의 일부인 것처럼 동작합니다. 배타적 버튼 그룹에서는 한 번에 하나의 버튼만 선택할 수 있으며, 다른 버튼을 선택하면 이전에 선택된 버튼의 선택 상태가 자동으로 해제됩니다.

이 속성은 버튼 그룹에 속한 버튼에는 영향을 미치지 않습니다.

라디오 버튼을 제외하고, autoExclusive는 기본적으로 비활성화되어 있습니다.

액세스 함수:

bool autoExclusive() const
void setAutoExclusive(bool)

QRadioButton도 참조하십시오 .

autoRepeat : bool

이 속성은 autoRepeat가 활성화되어 있는지 여부를 나타냅니다

autoRepeat가 활성화되어 있으면, 버튼이 눌려 있는 동안 pressed(), released(), clicked() 신호가 일정한 간격으로 발생합니다. autoRepeat는 기본적으로 비활성화되어 있습니다. 초기 지연 시간과 반복 간격은 autoRepeatDelay 및 autoRepeatInterval 에서 밀리초 단위로 정의됩니다.

참고: 단축키를 통해 버튼이 눌린 경우, 자동 반복 기능은 이 클래스가 아닌 시스템에 의해 활성화되고 시간이 제어됩니다. pressed(), released(), clicked() 신호는 일반적인 경우와 마찬가지로 발생합니다.

액세스 함수:

bool autoRepeat() const
void setAutoRepeat(bool)

autoRepeatDelay : int

이 속성은 자동 반복의 초기 지연 시간을 지정합니다.

autoRepeat 가 활성화된 경우, autoRepeatDelay는 자동 반복이 시작되기 전의 초기 지연 시간을 밀리초 단위로 정의합니다.

관련 함수:

int autoRepeatDelay() const
void setAutoRepeatDelay(int)

관련 항목: ` autoRepeat ` 및 ` autoRepeatInterval`.

autoRepeatInterval : int

이 속성은 자동 반복 간격을 지정합니다.

autoRepeat 가 활성화된 경우, autoRepeatInterval은 자동 반복 간격의 길이를 밀리초 단위로 정의합니다.

관련 함수:

int autoRepeatInterval() const
void setAutoRepeatInterval(int)

관련 항목: ` autoRepeat ` 및 ` autoRepeatDelay`.

checkable : bool

이 속성은 버튼에 체크 표시가 가능한지 여부를 나타냅니다.

기본적으로 이 버튼은 선택 불가능합니다.

액세스 함수:

bool isCheckable() const
void setCheckable(bool)

checked도 참조하십시오 .

checked : bool

이 속성은 버튼이 선택되어 있는지 여부를 나타냅니다.

선택 가능한 버튼만 선택할 수 있습니다. 기본적으로 버튼은 선택 해제된 상태입니다.

액세스 함수:

bool isChecked() const
void setChecked(bool)

Notifier 신호:

void toggled(bool checked)

checkable도 참조하십시오 .

down : bool

이 속성은 버튼이 눌려 있는지 여부를 나타냅니다.

이 속성이 ` true`인 경우, 버튼이 눌린 상태입니다. 이 속성을 `true`로 설정하면 ` pressed()` 및 ` clicked()` 신호가 발생하지 않습니다. 기본값은 `false`입니다.

액세스 함수:

bool isDown() const
void setDown(bool)

icon : QIcon

이 속성은 버튼에 표시되는 아이콘을 지정합니다.

아이콘의 기본 크기는 GUI 스타일에 의해 정의되지만, ` iconSize ` 속성을 설정하여 조정할 수 있습니다.

액세스 함수:

QIcon icon() const
void setIcon(const QIcon &icon)

iconSize : QSize

이 속성은 이 버튼에 사용되는 아이콘 크기를 지정합니다.

기본 크기는 GUI 스타일에 의해 정의됩니다. 이는 아이콘의 최대 크기입니다. 이보다 작은 아이콘은 확대되지 않습니다.

액세스 함수:

QSize iconSize() const
void setIconSize(const QSize &size)

shortcut : QKeySequence

이 속성은 버튼과 연관된 니모닉을 저장합니다

액세스 기능:

QKeySequence shortcut() const
void setShortcut(const QKeySequence &key)

text : QString

이 속성은 버튼에 표시되는 텍스트를 저장합니다.

버튼에 텍스트가 없는 경우, text() 함수는 빈 문자열을 반환합니다.

텍스트에 앰퍼샌드('&') 문자가 포함되어 있으면, 이에 대한 단축키가 자동으로 생성됩니다. '&' 뒤에 오는 문자가 단축키로 사용됩니다. 텍스트에 의해 단축키가 정의되지 않은 경우, 기존 단축키는 덮어쓰거나 지워집니다. 자세한 내용은 QShortcut 문서를 참조하십시오. 실제 앰퍼샌드를 표시하려면 '&&'를 사용하십시오.

기본 텍스트는 없습니다.

액세스 함수:

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

멤버 함수 설명서

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

parent 를 가진 추상 버튼을 생성합니다.

[virtual noexcept] QAbstractButton::~QAbstractButton()

버튼을 파괴합니다.

[slot] void QAbstractButton::animateClick()

애니메이션 클릭을 수행합니다: 버튼을 즉시 눌렀다가 100ms 후에 놓습니다.

버튼이 놓이기 전에 이 함수를 다시 호출하면 놓기 타이머가 재설정됩니다.

클릭과 관련된 모든 신호가 적절하게 발생합니다.

버튼이 disabled.

click()도 참조하십시오 .

[override virtual protected] void QAbstractButton::changeEvent(QEvent *e)

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

[virtual protected] void QAbstractButton::checkStateSet()

이 가상 핸들러는 setChecked()이 호출될 때, nextCheckState() 내부에서 호출된 경우는 제외하고 호출됩니다. 이를 통해 하위 클래스는 중간 버튼 상태를 재설정할 수 있습니다.

nextCheckState()도 참조하십시오 .

[slot] void QAbstractButton::click()

클릭을 수행합니다.

클릭과 관련된 모든 일반적인 신호가 적절하게 발생합니다. 버튼이 선택 가능한 경우, 버튼의 상태가 전환됩니다.

버튼이 disabled.

animateClick()함수도 참조하십시오 .

[signal] void QAbstractButton::clicked(bool checked = false)

이 신호는 버튼이 활성화될 때(즉, 마우스 커서가 버튼 내부에 있는 상태에서 버튼을 눌렀다가 놓았을 때), 단축키를 입력했을 때, 또는 ` click()` 또는 ` animateClick()`이 호출될 때 발생합니다. 특히, ` setDown()`, ` setChecked()` 또는 ` toggle()`을 호출할 경우에는 이 신호가 발생하지 않습니다.

버튼이 체크 가능한 경우, checked 는 버튼이 선택되어 있으면 true이고, 선택되어 있지 않으면 false입니다.

pressed(), released() 및 toggled()도 참조하십시오 .

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

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

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

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

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

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

QButtonGroup *QAbstractButton::group() const

이 버튼이 속한 그룹을 반환합니다.

해당 버튼이 어떤 ' QButtonGroup'에도 속해 있지 않은 경우, 이 함수는 ' nullptr'를 반환합니다.

QButtonGroup도 참조하십시오 .

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

pos 가 클릭 가능한 버튼 사각형 내에 있으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

기본적으로 클릭 가능한 영역은 위젯 전체입니다. 하위 클래스는 이 함수를 재구현하여 다양한 모양과 크기의 클릭 가능한 영역을 지원할 수 있습니다.

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

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

[override virtual protected] void QAbstractButton::keyReleaseEvent(QKeyEvent *e)

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

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

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

[override virtual protected] void QAbstractButton::mousePressEvent(QMouseEvent *e)

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

[override virtual protected] void QAbstractButton::mouseReleaseEvent(QMouseEvent *e)

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

[virtual protected] void QAbstractButton::nextCheckState()

이 가상 핸들러는 버튼이 클릭될 때 호출됩니다. 버튼이 isCheckable() 상태일 경우, 기본 구현은 setChecked(!isChecked())를 호출합니다. 이를 통해 하위 클래스에서 버튼의 중간 상태를 구현할 수 있습니다.

checkStateSet()도 참조하십시오 .

[override pure virtual protected] void QAbstractButton::paintEvent(QPaintEvent *e)

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

[signal] void QAbstractButton::pressed()

이 신호는 버튼을 눌렀을 때 발생합니다.

released() 및 clicked()도 참조하십시오 .

[signal] void QAbstractButton::released()

이 신호는 버튼을 놓았을 때 발생합니다.

pressed(), clicked(), toggled()도 참조하십시오 .

[override virtual protected] void QAbstractButton::timerEvent(QTimerEvent *e)

QObject::timerEvent(QTimerEvent *event)를 재구현합니다.

[slot] void QAbstractButton::toggle()

체크 가능한 버튼의 상태를 전환합니다.

checked도 참조하십시오 .

[signal] void QAbstractButton::toggled(bool checked)

이 신호는 선택 가능한 버튼의 상태가 변경될 때마다 발생합니다. checked 는 버튼이 선택된 경우 true를, 선택 해제된 경우 false를 반환합니다.

이는 사용자 동작, ` click()` 슬롯 활성화, 또는 ` setChecked()` 호출의 결과일 수 있습니다.

배타적 버튼 그룹에 속한 버튼들의 상태는 이 신호가 발송되기 전에 업데이트됩니다. 즉, 슬롯은 상태가 변경된 그룹 내 버튼들이 발송하는 "off" 신호나 "on" 신호 중 하나에 반응할 수 있습니다.

예를 들어, 새로 선택된 버튼이 방출하는 신호에는 반응하지만 선택이 해제된 버튼의 신호는 무시하는 슬롯은 다음 패턴을 사용하여 구현할 수 있습니다:

void MyWidget::reactToToggle(bool checked)
{
   if (checked) {
      // Examine the new button states.
      ...
   }
}

버튼 그룹은 ` QButtonGroup ` 클래스를 사용하여 생성할 수 있으며, 버튼 상태의 업데이트는 ` QButtonGroup::buttonClicked()` 신호를 통해 모니터링할 수 있습니다.

참고: 속성 checked 에 대한Notifier 신호.

checked 및 clicked()도 참조하십시오 .

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