QAbstractButton Class
QAbstractButton 클래스는 버튼 위젯의 추상 베이스 클래스로, 버튼에 공통된 기능을 제공합니다. 더 보기...
Header: | #include <QAbstractButton> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QWidget |
상속받습니다: |
속성
|
공용 기능
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() |
신호
보호된 함수
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 |
상세 설명
이 클래스는 추상 버튼을 구현합니다. 이 클래스의 서브 클래스는 사용자 동작을 처리하고 버튼이 그려지는 방법을 지정합니다.
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()는 모두 거짓입니다).
QAbstractButton은 네 가지 신호를 제공합니다:
- pressed()는 마우스 커서가 버튼 안에 있는 상태에서 마우스 왼쪽 버튼을 누르면 발생합니다.
- released()는 마우스 왼쪽 버튼에서 손을 떼면 발생합니다.
- clicked()는 버튼을 처음 눌렀다가 놓을 때, 바로 가기 키를 입력할 때, click() 또는 animateClick()가 호출될 때 발생합니다.
- toggled()는 토글 버튼의 상태가 변경될 때 발생합니다.
QAbstractButton을 서브클래싱하려면 최소한 paintEvent()를 다시 구현하여 버튼의 윤곽과 텍스트 또는 픽셀맵을 그려야 합니다. 일반적으로 sizeHint(), 때로는 hitButton()도 재구현하는 것이 좋습니다(버튼 누름이 버튼 내에 있는지 확인하기 위해). 상태가 두 개 이상인 버튼(예: 3상태 버튼)의 경우 checkStateSet() 및 nextCheckState()도 다시 구현해야 합니다.
QButtonGroup 를참조하세요 .
속성 문서
autoExclusive : bool
이 속성은 자동 독점 사용 여부를 보유합니다.
자동 독점 기능이 활성화되면 동일한 부모 위젯에 속한 체크 표시 버튼은 동일한 독점 버튼 그룹의 일부인 것처럼 동작합니다. 독점 버튼 그룹에서는 한 번에 하나의 버튼만 선택할 수 있으며, 다른 버튼을 선택하면 이전에 선택한 버튼의 선택이 자동으로 해제됩니다.
이 속성은 버튼 그룹에 속한 버튼에는 영향을 미치지 않습니다.
라디오 버튼을 제외하고 자동 전용은 기본적으로 꺼져 있습니다.
기능에 액세스합니다:
bool | autoExclusive() const |
void | setAutoExclusive(bool) |
QRadioButton 를참조하세요 .
autoRepeat : bool
이 속성은 자동 반복 활성화 여부를 보유합니다.
자동 반복이 활성화되면 버튼이 아래로 내려가면 pressed(), released() 및 clicked() 신호가 일정한 간격으로 전송됩니다. 자동 반복은 기본적으로 꺼져 있습니다. 초기 지연 및 반복 간격은 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) |
알림 신호:
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 * 이벤트).
[virtual protected]
void QAbstractButton::checkStateSet()
이 가상 핸들러는 nextCheckState() 내에서 호출되지 않는 한 setChecked()가 사용될 때 호출됩니다. 이를 통해 서브클래스는 중간 버튼 상태를 재설정할 수 있습니다.
nextCheckState()도 참조하세요 .
[slot]
void QAbstractButton::click()
클릭을 수행합니다.
클릭과 관련된 모든 일반적인 신호가 적절하게 방출됩니다. 버튼이 체크 가능한 경우 버튼의 상태가 전환됩니다.
버튼이 비활성화되어 있으면 이 함수는 아무 작업도 수행하지 않습니다. disabled.
animateClick()도 참조하세요 .
[signal]
void QAbstractButton::clicked(bool checked = false)
이 신호는 버튼이 활성화되거나(즉, 마우스 커서가 버튼 안에 있는 상태에서 눌렀다가 놓았을 때) 단축키가 입력되거나 click() 또는 animateClick()가 호출될 때 발생합니다. 특히 setDown(), setChecked() 또는 toggle()를 호출하는 경우에는 이 신호가 발생하지 않습니다.
버튼이 선택 가능한 경우 버튼이 선택되어 있으면 checked 은 참이고, 버튼이 선택되지 않은 경우 거짓입니다.
pressed(), released() 및 toggled()도 참조하세요 .
[override virtual protected]
bool QAbstractButton::event(QEvent *e)
다시 구현합니다: QWidget::event(QEvent * 이벤트).
[override virtual protected]
void QAbstractButton::focusInEvent(QFocusEvent *e)
다시 구현합니다: QWidget::focusInEvent(QFocusEvent * 이벤트).
[override virtual protected]
void QAbstractButton::focusOutEvent(QFocusEvent *e)
다시 구현합니다: QWidget::focusOutEvent(QFocusEvent * 이벤트).
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 * 이벤트).
[override virtual protected]
void QAbstractButton::keyReleaseEvent(QKeyEvent *e)
다시 구현합니다: QWidget::keyReleaseEvent(QKeyEvent * 이벤트).
[override virtual protected]
void QAbstractButton::mouseMoveEvent(QMouseEvent *e)
다시 구현합니다: QWidget::mouseMoveEvent(QMouseEvent * 이벤트).
[override virtual protected]
void QAbstractButton::mousePressEvent(QMouseEvent *e)
다시 구현합니다: QWidget::mousePressEvent(QMouseEvent * 이벤트).
[override virtual protected]
void QAbstractButton::mouseReleaseEvent(QMouseEvent *e)
다시 구현합니다: QWidget::mouseReleaseEvent(QMouseEvent * 이벤트).
[virtual protected]
void QAbstractButton::nextCheckState()
이 가상 핸들러는 버튼이 클릭될 때 호출됩니다. 기본 구현은 버튼이 isCheckable()인 경우 setChecked(!isChecked())를 호출합니다. 이를 통해 서브클래스가 중간 버튼 상태를 구현할 수 있습니다.
checkStateSet()도 참조하세요 .
[override pure virtual protected]
void QAbstractButton::paintEvent(QPaintEvent *e)
다시 구현합니다: QWidget::paintEvent(QPaintEvent * 이벤트).
[signal]
void QAbstractButton::pressed()
이 신호는 버튼을 눌렀을 때 방출됩니다.
released() 및 clicked()도 참조하세요 .
[signal]
void QAbstractButton::released()
이 신호는 버튼을 놓을 때 방출됩니다.
pressed(), clicked() 및 toggled()도 참조하세요 .
[override virtual protected]
void QAbstractButton::timerEvent(QTimerEvent *e)
다시 구현합니다: QObject::timerEvent(Q타이머이벤트 *이벤트).
[slot]
void QAbstractButton::toggle()
확인 가능 버튼의 상태를 토글합니다.
checked도 참조하세요 .
[signal]
void QAbstractButton::toggled(bool checked)
이 신호는 체크 가능한 버튼의 상태가 변경될 때마다 발생합니다. checked 버튼이 체크된 경우 참이고 버튼이 체크되지 않은 경우 거짓입니다.
이는 사용자 작업, click() 슬롯 활성화 또는 setChecked() 호출로 인한 결과일 수 있습니다.
전용 버튼 그룹에 있는 버튼의 상태는 이 신호가 발생하기 전에 업데이트됩니다. 즉, 슬롯은 상태가 변경된 그룹의 버튼에서 방출되는 "꺼짐" 신호 또는 "켜짐" 신호에 따라 작동할 수 있습니다.
예를 들어, 새로 체크된 버튼에서 방출되는 신호에는 반응하지만 체크되지 않은 버튼의 신호는 무시하는 슬롯은 다음 패턴을 사용하여 구현할 수 있습니다:
void MyWidget::reactToToggle(bool checked) { if (checked) { // Examine the new button states. ... } }
QButtonGroup 클래스를 사용하여 버튼 그룹을 생성하고 QButtonGroup::buttonClicked() 신호로 모니터링되는 버튼 상태를 업데이트할 수 있습니다.
참고: checked 속성에 대한 알림 신호.
© 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.