Описание класса QAbstractButton
|
|
Класс 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() в следующем. Когда пользователь щелкает по триггерной кнопке, она переходит в состояние нажата, потом в установлена. Когда пользователь щелкает ещё раз (для того, чтобы снять установку), кнопка переходит в состояние нажата, а затем в не установлена (isChecked() и isDown() оба вернут false).
QAbstractButton предоставляет пять сигналов:
В подклассе QAbstractButton вы должны, по меньшей мере, переопределить paintEvent() для правильного отображения контура, текста или изображения кнопки. Вообще, желательно также переопределить sizeHint() и иногда hitButton() (для определения, находится ли указатель мыши в пределах кнопки во время нажатия кнопки мыши). Для кнопок, имеющих более двух состояний (подобных кнопкам с тремя состояниями), вы также должны переопределить checkStateSet() и nextCheckState().
Смотрите также QButtonGroup.
Данное свойство указывает, является ли поведение кнопки автоэксклюзивным.
Если автоэксклюзивное поведение доступно, то контрольные кнопки, являющиеся дочерними для одного родительского виджета, будут вести себя так, как будто они входят в одну эксклюзивную группу кнопок. В эксклюзивной группе кнопок в один момент времени только одна кнопка может иметь установленное состояние; все другие контрольные кнопки автоматически становятся неустановленными при установке одной контрольной кнопки.
Данное свойство не влияет на поведение кнопок, принадлежащих группе кнопок.
По умолчанию autoExclusive отключено, за исключением радио-кнопок.
Функции доступа:
Смотрите также QRadioButton.
Данное свойство указывает, доступно ли автоповторение.
Если автоповторение доступно, то сигналы pressed(), released() и clicked() испускается через равные промежутки времени пока кнопка нажата. По умолчанию свойство autoRepeat отключено. Интервал задержки и повторения определяется в миллисекундах с помощью autoRepeatDelay и autoRepeatInterval.
Замечание: если кнопка нажата с помощью горячей клавиши, автоповторение включено, а его параметры определяются системой, а не этим классом. Сигналы pressed(), released() и clicked() будут посылаться как обычно.
Функции доступа:
Это свойство содержит начальную задержку автоповтора.
Если autoRepeat разрешен, то autoRepeatDelay определяет начальную задержку в миллисекундах перед автоповтором.
Это свойство было введено в Qt 4.2.
Функции доступа:
Смотрите также autoRepeat и autoRepeatInterval.
Это свойство содержит интервал автоповтора.
Если autoRepeat разрешен, то autoRepeatInterval определяет длительность интервала между повторами в миллисекундах.
Это свойство было введено в Qt 4.2.
Функции доступа:
Смотрите также autoRepeat и autoRepeatDelay.
Данное свойство указывает, является ли кнопка триггерной.
По умолчанию, кнопка такой не является.
Функции доступа:
Смотрите также checked.
Данное свойство указывает, является ли кнопка установленной.
Только триггерные кнопки могут быть установленными. По умолчанию кнопка не установлена.
Функции доступа:
Смотрите также checkable.
Данное свойство указывает, является ли кнопка нажатой.
Если данное свойство равно true, то кнопка является нажатой. Сигналы pressed() и clicked() не испускаются, если вы устанавливаете данное свойство в true. По умолчанию равно false.
Функции доступа:
Данное свойство содержит иконку, отображаемую на кнопке.
По умолчанию размеры иконки определяются в зависимости от стиля GUI, но они могут быть изменены с помощью свойства iconSize.
Функции доступа:
Данное свойство содержит размеры иконки, используемой данной кнопкой.
По умолчанию размеры иконки определяются в зависимости от стиля GUI. Определяет максимальный размер для иконок. Маленькие иконки не масштабируются больше своего размера.
Функции доступа:
Данное свойство содержит мнемоническую ассоциацию кнопки.
Функции доступа:
Данное свойство содержит текст, отображаемый на кнопке.
Если кнопка не имеет текста, то функция text() возвращает пустую строку.
Если текст содержит символ амперсанда ('&'), то для кнопки автоматически создается горячая клавиша (мнемоническая ассоциация) Следующий после '&' символ будет использован для создания горячего сочетания клавиш. Ранее созданная мнемоническая ассоциация будет перенастроена или очищена, если мнемоническая ассоциация не определяется в тексте. Смотрите документацию по QShortcut (для отображения актуального амперсанда, используйте '&&').
Текст по умолчанию не определён.
Функции доступа:
Создает абстрактную кнопку с родителем parent.
Уничтожает кнопку.
Анимирует нажатие кнопки: кнопка сперва нажимается, а спустя msec миллисекунд отпускается (по умолчанию 100 мс).
Повторный вызов этой функции до отпускания кнопки будет сбрасывать таймер отпускания.
Все сигналы, связанные с нажатием и отпусканием кнопки, испускаются в соответствующие моменты времени.
Данная функция ничего не делает, если кнопка в состоянии disabled.
Смотрите также click().
Данный обработчик сообщений вызывается при вызове setChecked() за исключением случаев, когда вызывается из nextCheckState(). Обработчик позволяет подклассам устанавливать промежуточные состояния кнопки.
Смотрите также nextCheckState().
Имитирует щелчок по кнопке.
Все сигналы, ассоциированные с щелчком по кнопке, испускаются в соответствующем порядке. Если кнопка триггерная, то ее состояние меняется.
Данная функция ничего не делает, если кнопка в состоянии disabled.
Смотрите также animateClick().
Данный сигнал испускается при активизации кнопки (т.е. когда нажатая кнопка отпускается при нахождении указателя мыши внутри кнопки), при нажатии горячего сочетания клавиш или при вызове click() или animateClick(). Обратите внимание: данный сигнал не испускается при вызове setDown(), setChecked() или toggle().
Если кнопка триггерная, checked устанавливается в true, если она уже установлена, и в false в противном случае.
Смотрите также pressed(), released() и toggled().
Возвращает группу, к которой принадлежит кнопка.
Если кнопка не является членом какой-либо QButtonGroup, то данная функция возвращает 0.
Смотрите также QButtonGroup.
Возвращает true, если точкаpos находится внутри активного прямоугольника кнопки; в противном случает возвращает false.
По умолчанию, активная область - это весь виджет. Подклассы могут переопределить данную функцию для предоставления поддержки активной области другой формы и размеров.
Данный виртуальный обработчик сообщений вызывается при нажатии кнопки. Реализация по умолчанию вызывает setChecked(!isChecked()) если isCheckable() возвращает true. Данный обработчик позволяет подклассам устанавливать промежуточные состояния кнопки.
Смотрите также checkStateSet().
Данный сигнал испускается при нажатии кнопки.
Смотрите также released() и clicked().
Данный сигнал испускается при отпускании кнопки.
Смотрите также pressed(), clicked() и toggled().
Меняет состояние триггерной кнопки.
Смотрите также checked.
Данный сигнал испускается всякий раз, когда меняется состояние триггерной кнопки. checked равно true, если кнопка установлена, или false, если кнопка не установлена.
Это может произойти в результате действий пользователя, активизации слота click() или вызова setChecked().
Состояние кнопок в исключающих кнопочных группах обновляется перед посылкой этого сигнала. Это означает, что слоты могут действовать либо по сигналу "выкл" либо по сигналу "вкл", посылаемого кнопками в группе, чьи состояния изменились.
Например, слот, который реагирует на сигналы, посылаемые вновь нажатой кнопкой, но игнорирующий сигналы от кнопок, которые были отжаты, может быть реализован, используя следующий шаблон:
void MyWidget::reactToToggle(bool checked)
{
if (checked) {
// Опрашиваем состояние новой кнопки.
...
}
}
Группы кнопок могут быть созданы, используя класс QButtonGroup, а обновления состояний кнопок проверены с помощью сигнала QButtonGroup::buttonClicked().
Смотрите также checked и clicked().
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) | Торговые марки | Qt 4.5.3 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |