Описание класса QAbstractButtonКласс QAbstractButton - это абстрактный базовый класс для виджетов-кнопок, предоставляющий функциональные возможности, обычные для кнопок. Далее... #include <QAbstractButton> Унаследован от: QWidget. От него наследуются: Q3Button, QCheckBox, QPushButton, QRadioButton и QToolButton. Свойства
Открытые функции
Открытые слоты
Сигналы
Защищенные функции
Переопределённые защищённые функции
Дополнительные унаследованные члены
Подробное описаниеКласс 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 : boolДанное свойство указывает, является ли поведение кнопки автоэксклюзивным. Если автоэксклюзивное поведение доступно, то контрольные кнопки, являющиеся дочерними для одного родительского виджета, будут вести себя так, как будто они входят в одну эксклюзивную группу кнопок. В эксклюзивной группе кнопок в один момент времени только одна кнопка может иметь установленное состояние; все другие контрольные кнопки автоматически становятся неустановленными при установке одной контрольной кнопки. Данное свойство не влияет на поведение кнопок, принадлежащих группе кнопок. По умолчанию autoExclusive отключено, за исключением радио-кнопок. Функции доступа:
Смотрите также QRadioButton. autoRepeat : boolДанное свойство указывает, доступно ли автоповторение. Если автоповторение доступно, то сигналы pressed(), released() и clicked() испускается через равные промежутки времени пока кнопка нажата. По умолчанию свойство autoRepeat отключено. Интервал задержки и повторения определяется в миллисекундах с помощью autoRepeatDelay и autoRepeatInterval. Замечание: если кнопка нажата с помощью горячей клавиши, автоповторение включено, а его параметры определяются системой, а не этим классом. Сигналы pressed(), released() и clicked() будут посылаться как обычно. Функции доступа:
autoRepeatDelay : intЭто свойство содержит начальную задержку автоповтора. Если autoRepeat разрешен, то autoRepeatDelay определяет начальную задержку в миллисекундах перед автоповтором. Это свойство было введено в Qt 4.2. Функции доступа:
Смотрите также autoRepeat и autoRepeatInterval. autoRepeatInterval : intЭто свойство содержит интервал автоповтора. Если autoRepeat разрешен, то autoRepeatInterval определяет длительность интервала между повторами в миллисекундах. Это свойство было введено в Qt 4.2. Функции доступа:
Смотрите также autoRepeat и autoRepeatDelay. checkable : boolДанное свойство указывает, является ли кнопка триггерной. По умолчанию, кнопка такой не является. Функции доступа:
Смотрите также checked. checked : boolДанное свойство указывает, является ли кнопка установленной. Только триггерные кнопки могут быть установленными. По умолчанию кнопка не установлена. Функции доступа:
Уведомляющий сигнал:
Смотрите также checkable. down : boolДанное свойство указывает, является ли кнопка нажатой. Если данное свойство равно true, то кнопка является нажатой. Сигналы pressed() и clicked() не испускаются, если вы устанавливаете данное свойство в true. По умолчанию равно false. Функции доступа:
icon : QIconДанное свойство содержит иконку, отображаемую на кнопке. По умолчанию размеры иконки определяются в зависимости от стиля GUI, но они могут быть изменены с помощью свойства iconSize. Функции доступа:
iconSize : QSizeДанное свойство содержит размеры иконки, используемой данной кнопкой. По умолчанию размеры иконки определяются в зависимости от стиля GUI. Определяет максимальный размер для иконок. Маленькие иконки не масштабируются больше своего размера. Функции доступа:
shortcut : QKeySequenceДанное свойство содержит мнемоническую ассоциацию кнопки. Функции доступа:
text : QStringДанное свойство содержит текст, отображаемый на кнопке. Если кнопка не имеет текста, то функция text() возвращает пустую строку. Если текст содержит символ амперсанда ('&'), то для кнопки автоматически создается горячая клавиша (мнемоническая ассоциация) Следующий после '&' символ будет использован для создания сочетания "горячих" клавиш. Любая предыдущая комбинация "горячих" клавиш будет заменена, а если комбинация "горячих" клавиш в тексте не определена, то очищена. За подробностями обращайтесь к документации по QShortcut (для фактического отображения амперсанда используйте '&&'). Текст по умолчанию не определён. Функции доступа:
Описание функций-членовQAbstractButton::QAbstractButton ( QWidget * parent = 0 )Создает абстрактную кнопку с родителем parent. QAbstractButton::~QAbstractButton ()Уничтожает кнопку. void QAbstractButton::animateClick ( int msec = 100 ) [slot]Анимирует нажатие кнопки: кнопка сперва нажимается, а спустя msec миллисекунд отпускается (по умолчанию 100 мс). Повторный вызов этой функции до отпускания кнопки будет сбрасывать таймер отпускания. Все сигналы, связанные с нажатием и отпусканием кнопки, испускаются в соответствующие моменты времени. Данная функция ничего не делает, если кнопка в состоянии disabled. Смотрите также click(). void QAbstractButton::changeEvent ( QEvent * e ) [virtual protected]Переопределено от QWidget::changeEvent(). void QAbstractButton::checkStateSet () [virtual protected]Данный обработчик сообщений вызывается при вызове setChecked() за исключением случаев, когда вызывается из nextCheckState(). Обработчик позволяет подклассам устанавливать промежуточные состояния кнопки. Смотрите также nextCheckState(). void QAbstractButton::click () [slot]Имитирует щелчок по кнопке. Все сигналы, ассоциированные с щелчком по кнопке, испускаются в соответствующем порядке. Если кнопка триггерная, то ее состояние меняется. Данная функция ничего не делает, если кнопка в состоянии disabled. Смотрите также animateClick(). void QAbstractButton::clicked ( bool checked = false ) [signal]Данный сигнал испускается при активизации кнопки (т.е. когда нажатая кнопка отпускается при нахождении указателя мыши внутри кнопки), при нажатии горячего сочетания клавиш или при вызове click() или animateClick(). Обратите внимание: данный сигнал не испускается при вызове setDown(), setChecked() или toggle(). Если кнопка триггерная, checked устанавливается в true, если она уже установлена, и в false в противном случае. Смотрите также pressed(), released() и toggled(). bool QAbstractButton::event ( QEvent * e ) [virtual protected]Переопределено от QObject::event(). void QAbstractButton::focusInEvent ( QFocusEvent * e ) [virtual protected]Переопределено из QWidget::focusInEvent(). void QAbstractButton::focusOutEvent ( QFocusEvent * e ) [virtual protected]Переопределено из QWidget::focusOutEvent(). QButtonGroup * QAbstractButton::group () constВозвращает группу, к которой принадлежит кнопка. Если кнопка не является членом какой-либо QButtonGroup, то данная функция возвращает 0. Смотрите также QButtonGroup. bool QAbstractButton::hitButton ( const QPoint & pos ) const [virtual protected]Возвращает true, если точкаpos находится внутри активного прямоугольника кнопки; в противном случает возвращает false. По умолчанию, активная область - это весь виджет. Подклассы могут переопределить данную функцию для предоставления поддержки активной области другой формы и размеров. void QAbstractButton::keyPressEvent ( QKeyEvent * e ) [virtual protected]Переопределено от QWidget::keyPressEvent(). void QAbstractButton::keyReleaseEvent ( QKeyEvent * e ) [virtual protected]Переопределено из QWidget::keyReleaseEvent(). void QAbstractButton::mouseMoveEvent ( QMouseEvent * e ) [virtual protected]Переопределено из QWidget::mouseMoveEvent(). void QAbstractButton::mousePressEvent ( QMouseEvent * e ) [virtual protected]Переопределено из QWidget::mousePressEvent(). void QAbstractButton::mouseReleaseEvent ( QMouseEvent * e ) [virtual protected]Переопределено из QWidget::mouseReleaseEvent(). void QAbstractButton::nextCheckState () [virtual protected]Данный виртуальный обработчик сообщений вызывается при нажатии кнопки. Реализация по умолчанию вызывает setChecked(!isChecked()) если isCheckable() возвращает true. Данный обработчик позволяет подклассам устанавливать промежуточные состояния кнопки. Смотрите также checkStateSet(). void QAbstractButton::paintEvent ( QPaintEvent * e ) [pure virtual protected]Переопределено от QWidget::paintEvent(). void QAbstractButton::pressed () [signal]Данный сигнал испускается при нажатии кнопки. Смотрите также released() и clicked(). void QAbstractButton::released () [signal]Данный сигнал испускается при отпускании кнопки. Смотрите также pressed(), clicked() и toggled(). void QAbstractButton::timerEvent ( QTimerEvent * e ) [virtual protected]Переопределено из QObject::timerEvent(). void QAbstractButton::toggle () [slot]Меняет состояние триггерной кнопки. Смотрите также checked. void QAbstractButton::toggled ( bool checked ) [signal]Данный сигнал испускается всякий раз, когда меняется состояние триггерной кнопки. checked равно true, если кнопка установлена, или false, если кнопка не установлена. Это может произойти в результате действий пользователя, активизации слота click() или вызова setChecked(). Состояние кнопок в исключающих кнопочных группах обновляется перед посылкой этого сигнала. Это означает, что слоты могут действовать либо по сигналу "выкл" либо по сигналу "вкл", посылаемого кнопками в группе, чьи состояния изменились. Например, слот, который реагирует на сигналы, посылаемые вновь нажатой кнопкой, но игнорирующий сигналы от кнопок, которые были отжаты, может быть реализован, используя следующий шаблон: void MyWidget::reactToToggle(bool checked) { if (checked) { // Опрашиваем состояние новой кнопки. ... } } Группы кнопок могут быть созданы, используя класс QButtonGroup, а обновления состояний кнопок проверены с помощью сигнала QButtonGroup::buttonClicked(). |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |