Класс QAbstractButton
Класс QAbstractButton — это абстрактный базовый класс виджетов кнопок, предоставляющий функциональность, общую для кнопок. Подробнее...
| Заголовок: | #include <QAbstractButton> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) 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() |
Сигналы
| 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 |
Подробное описание
Этот класс реализует абстрактную кнопку. Подклассы этого класса обрабатывают действия пользователя и определяют, как рисуется кнопка.
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), могут отображать как текст, так и значки.
Кнопку можно сделать кнопкой по умолчанию в диалоговом окне с помощью 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() (для определения того, находится ли нажатие кнопки внутри кнопки). Для кнопок с более чем двумя состояниями (например, три-состояний) также необходимо переопределить checkStateSet() и nextCheckState().
См. также QButtonGroup.
Документация свойств
autoExclusive : bool
Это свойство определяет, включена ли автоматическая эксклюзивность.
Если автоматическая эксклюзивность включена, переключатели, принадлежащие одному родительскому виджету, ведут себя так, как будто они являются частью одной группы эксклюзивных кнопок. В группе эксклюзивных кнопок одновременно может быть отмечена только одна кнопка; нажатие другой кнопки автоматически сбросит предыдущую.
Свойство не влияет на кнопки, принадлежащие группе кнопок.
autoExclusive выключен по умолчанию, за исключением радиокнопок.
Функции доступа:
| 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, кнопка нажата. Сигналы pressed() и clicked() не генерируются, если вы установите это свойство в значение true. По умолчанию false.
Функции доступа:
| bool | isDown() const |
| void | setDown(bool) |
icon : QIcon
Это свойство содержит значок, отображаемый на кнопке.
Размер значка по умолчанию определяется стилем пользовательского интерфейса, но может быть изменен с помощью свойства iconSize.
Функции доступа:
| QIcon | icon() const |
| void | setIcon(const QIcon &icon) |
iconSize : QSize
Это свойство содержит размер значка, используемого для этой кнопки.
Размер по умолчанию определяется стилем пользовательского интерфейса. Это максимальный размер для значков. Значки меньшего размера не будут масштабироваться.
Функции доступа:
| 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) |
Документация по функциям-членам
QAbstractButton::QAbstractButton(QWidget *parent = nullptr)
Конструирует абстрактную кнопку с parent.
[slot] void QAbstractButton::animateClick()
Выполняет анимированный клик: кнопка нажимается немедленно, а отпускается через 100 мс.
Повторное вызов этой функции, прежде чем кнопка будет отпущена, сбрасывает таймер отпуска.
Все сигналы, связанные с кликом, генерируются соответствующим образом.
Эта функция ничего не делает, если кнопка отключена.
См. также click().
[slot] void QAbstractButton::click()
Выполняет клик.
Все обычные сигналы, связанные с кликом, генерируются соответствующим образом. Если кнопка выбираемая, её состояние переключается.
Эта функция ничего не делает, если кнопка отключена.
См. также animateClick().
[signal] void QAbstractButton::clicked(bool checked = false)
Этот сигнал излучается, когда кнопка активируется (т.е., нажата и отпущена, в то время как указатель мыши находится внутри кнопки), когда нажата комбинация клавиш или когда вызывается click() или animateClick(). Обратите внимание, что этот сигнал не излучается, если вы вызываете setDown(), setChecked() или toggle().
Если кнопка может быть отмечена, то checked равно true, если кнопка отмечена, или false, если кнопка не отмечена.
См. также pressed(), released() и toggled().
[signal] void QAbstractButton::pressed()
Этот сигнал излучается при нажатии кнопки.
См. также released() и clicked().
[signal] void QAbstractButton::released()
Этот сигнал излучается при отпускании кнопки.
См. также pressed(), clicked() и toggled().
[slot] void QAbstractButton::toggle()
Переключает состояние кнопки, которую можно отмечать.
См. также checked.
[signal] void QAbstractButton::toggled(bool checked)
Этот сигнал излучается всякий раз, когда изменяется состояние кнопки, которую можно отмечать. checked равно true, если кнопка отмечена, или false, если кнопка не отмечена.
Это может быть результатом действия пользователя, активации слота click() или вызова setChecked().
Состояния кнопок в группах эксклюзивных кнопок обновляются до излучения этого сигнала. Это означает, что слоты могут реагировать как на сигнал «выкл.», так и на сигнал «вкл.», излучаемые кнопками в группе, состояния которых изменились.
Например, слот, реагирующий на сигналы, излучаемые только что отмеченными кнопками, но игнорирующий сигналы от кнопок, которые были сняты с отметки, может быть реализован с помощью следующего шаблона:
void MyWidget::reactToToggle(bool checked)
{
if (checked) {
// Examine the new button states.
...
}
} Группы кнопок могут быть созданы с помощью класса QButtonGroup, а обновления состояний кнопок отслеживаются с помощью сигнала QButtonGroup::buttonClicked().
Примечание: Сигнал уведомления для свойства checked.
См. также checked и clicked().
[virtual] QAbstractButton::~QAbstractButton()
Удаляет кнопку.
[override virtual protected] void QAbstractButton::changeEvent(QEvent *e)
Переопределяет: QWidget::changeEvent(QEvent *event).
[virtual protected] void QAbstractButton::checkStateSet()
Этот виртуальный обработчик вызывается при использовании setChecked(), если он не вызывается изнутри nextCheckState(). Это позволяет подклассам сбрасывать промежуточные состояния кнопок.
См. также nextCheckState().
[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
Возвращает true, если pos находится внутри области кликабельной кнопки; в противном случае возвращает 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()
Этот виртуальный обработчик вызывается при нажатии кнопки. По умолчанию он вызывает setChecked(!isChecked()) если кнопка isCheckable(). Это позволяет подклассам реализовывать промежуточные состояния кнопок.
См. также checkStateSet().
[override pure virtual protected] void QAbstractButton::paintEvent(QPaintEvent *e)
Переопределяет: QWidget::paintEvent(QPaintEvent *event).
[override virtual protected] void QAbstractButton::timerEvent(QTimerEvent *e)
Переопределяет: QObject::timerEvent(QTimerEvent *event).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qabstractbutton.html