Класс QAbstractButton
Класс QAbstractButton является абстрактным базовым классом виджетов кнопок, предоставляя функциональность, общую для кнопок. Подробнее...
| Заголовок: | #include <QAbstractButton> |
| 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(int msec = 100) |
| 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() оба равны false).
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() генерируются через равные промежутки времени, пока кнопка нажата. По умолчанию autoRepeat выключен. Начальная задержка и интервал повторения определяются в миллисекундах свойствами autoRepeatDelay и autoRepeatInterval.
Примечание: Если кнопка нажата с помощью комбинации клавиш, то автоповтор включен и регулируется системой, а не этим классом. Сигналы pressed(), released() и clicked() будут генерироваться так же, как и в обычном случае.
Функции доступа:
| bool | autoRepeat() const |
| void | setAutoRepeat(bool) |
autoRepeatDelay : int
Это свойство задаёт начальную задержку автоповтора.
Если autoRepeat включен, то autoRepeatDelay определяет начальную задержку в миллисекундах, после которой начинается автоповтор.
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| int | autoRepeatDelay() const |
| void | setAutoRepeatDelay(int) |
См. также autoRepeat и autoRepeatInterval.
autoRepeatInterval : int
Это свойство задаёт интервал автоповтора.
Если autoRepeat включен, то autoRepeatInterval определяет длительность интервала автоповтора в миллисекундах.
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| 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(int msec = 100)
Выполняет анимированный клик: кнопка нажимается немедленно, и отпускается через msec миллисекунд (по умолчанию 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-5.13/qabstractbutton.html