Класс 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) |
- 214 открытых функций унаследовано от QWidget
- 34 открытых функции унаследовано от QObject
- 14 открытых функций унаследовано от QPaintDevice
Публичные слоты
| 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 |
- 35 защищённые функции, унаследованные от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 1 общедоступная переменная, унаследованная от QObject
- 5 статические общедоступные члены, унаследованные от QWidget
- 10 статических общедоступных членов, унаследованных от QObject
- 1 защищённый слот, унаследованный от QWidget
- 2 защищённые переменные, унаследованные от QObject
- 1 защищённый тип, унаследованный от QPaintDevice
Подробное описание
Класс QAbstractButton — это абстрактный базовый класс виджетов кнопок, предоставляющий общие функции для кнопок.
Этот класс реализует абстрактную кнопку. Подклассы этого класса обрабатывают действия пользователя и определяют, как рисуется кнопка.
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() (для определения, находится ли нажатие кнопки внутри кнопки). Для кнопок с более чем двумя состояниями (например, три состояния) также необходимо переопределить checkStateSet() и nextCheckState().
См. также QButtonGroup.
Документация свойств
autoExclusive : bool
Это свойство указывает, включена ли функция автоматического исключения.
Если функция автоматического исключения включена, кнопкам с флагом checkable, принадлежащим одному родительскому виджету, будет имитироваться принадлежность к одной группе кнопок с исключением. В группе кнопок с исключением только одна кнопка может быть выбрана в любой момент; выбор другой кнопки автоматически сбрасывает выбор предыдущей.
Свойство не влияет на кнопки, принадлежащие группе кнопок.
По умолчанию 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
Это свойство указывает, отмечена ли кнопка.
Только кнопки с флагом checkable могут быть отмечены. По умолчанию кнопка не отмечена.
Функции доступа:
| 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.
[virtual] QAbstractButton::~QAbstractButton()
Удаляет кнопку.
[slot] void QAbstractButton::animateClick(int msec = 100)
Выполняет анимацию нажатия: кнопка нажимается немедленно, и отпускается через msec миллисекунд (по умолчанию 100 мс).
Вызов этой функции снова до отпускания кнопки сбрасывает таймер отпускания.
Все сигналы, связанные с нажатием, генерируются соответствующим образом.
Эта функция ничего не делает, если кнопка выключена.
См. также click().
[override virtual protected] void QAbstractButton::changeEvent(QEvent *e)
Переопределяет метод QWidget::changeEvent().
[virtual protected] void QAbstractButton::checkStateSet()
Этот виртуальный обработчик вызывается, когда используется setChecked(), за исключением случаев, когда он вызывается из nextCheckState(). Это позволяет подклассам сбрасывать промежуточные состояния кнопок.
См. также nextCheckState().
[slot] void QAbstractButton::click()
Выполняет щелчок.
Все обычные сигналы, связанные со щелчком, генерируются соответствующим образом. Если кнопка имеет свойство checkable, состояние кнопки переключается.
Эта функция ничего не делает, если кнопка отключена.
См. также animateClick().
[signal] void QAbstractButton::clicked(bool checked = false)
Этот сигнал генерируется, когда кнопка активируется (т.е., нажата и отпущена, при этом курсор мыши находится внутри кнопки), когда нажимается сочетание клавиш или когда вызывается click() или animateClick(). Важно отметить, что этот сигнал не генерируется, если вы вызываете setDown(), setChecked() или toggle().
Если кнопка имеет свойство checkable, checked имеет значение true, если кнопка выбрана, или false, если кнопка не выбрана.
См. также pressed(), released() и toggled().
[override virtual protected] bool QAbstractButton::event(QEvent *e)
Переопределено из QWidget::event().
[override virtual protected] void QAbstractButton::focusInEvent(QFocusEvent *e)
Переопределено из QWidget::focusInEvent().
[override virtual protected] void QAbstractButton::focusOutEvent(QFocusEvent *e)
Переопределено из QWidget::focusOutEvent().
QButtonGroup *QAbstractButton::group() const
Возвращает группу, к которой принадлежит эта кнопка.
Если кнопка не является членом никакой группы QButtonGroup, эта функция возвращает 0.
См. также QButtonGroup.
[virtual protected] bool QAbstractButton::hitButton(const QPoint &pos) const
Возвращает true, если pos находится внутри прямоугольника кликабельной области кнопки; в противном случае возвращает false.
По умолчанию кликабельная область — весь виджет. Подклассы могут переопределить эту функцию для поддержки кликабельных областей различной формы и размеров.
[override virtual protected] void QAbstractButton::keyPressEvent(QKeyEvent *e)
Переопределено из QWidget::keyPressEvent().
[override virtual protected] void QAbstractButton::keyReleaseEvent(QKeyEvent *e)
Переопределено из QWidget::keyReleaseEvent().
[override virtual protected] void QAbstractButton::mouseMoveEvent(QMouseEvent *e)
Переопределено из QWidget::mouseMoveEvent().
[override virtual protected] void QAbstractButton::mousePressEvent(QMouseEvent *e)
Переопределено из QWidget::mousePressEvent().
[override virtual protected] void QAbstractButton::mouseReleaseEvent(QMouseEvent *e)
Переопределено из QWidget::mouseReleaseEvent().
[virtual protected] void QAbstractButton::nextCheckState()
Этот виртуальный обработчик вызывается при нажатии кнопки. По умолчанию он вызывает setChecked(!isChecked()) если кнопка имеет свойство checkable. Это позволяет подклассам реализовать промежуточные состояния кнопок.
См. также checkStateSet().
[override pure virtual protected] void QAbstractButton::paintEvent(QPaintEvent *e)
Переопределено из QWidget::paintEvent().
[signal] void QAbstractButton::pressed()
Этот сигнал генерируется, когда кнопка нажата.
См. также released() и clicked().
[signal] void QAbstractButton::released()
Этот сигнал генерируется, когда кнопка отпущена.
См. также pressed(), clicked() и toggled().
[override virtual protected] void QAbstractButton::timerEvent(QTimerEvent *e)
Переопределено из QObject::timerEvent().
[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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qabstractbutton.html