Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Описание класса QAbstractButton
[модуль QtGui]

Класс 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 предоставляет пять сигналов:

  1. pressed() испускается, если кнопка мыши нажата в тот момент, когда указатель мыши находится в пределах кнопки.
  2. released() испускается, когда отпускается кнопка мыши.
  3. clicked() испускается, если кнопка мыши нажата, а затем отпущена, когда нажимается соответствующее горячее сочетание клавиш или когда вызывается click() или animateClick().
  4. toggled() испускается, когда состояние контрольной кнопки изменяется.

В подклассе 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::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().

QButtonGroup * QAbstractButton::group () const

Возвращает группу, к которой принадлежит кнопка.

Если кнопка не является членом какой-либо QButtonGroup, то данная функция возвращает 0.

Смотрите также QButtonGroup.

bool QAbstractButton::hitButton ( const QPoint & pos ) const   [virtual protected]

Возвращает true, если точкаpos находится внутри активного прямоугольника кнопки; в противном случает возвращает false.

По умолчанию, активная область - это весь виджет. Подклассы могут повторно реализовать данную функцию для предоставления поддержки активной области другой формы и размеров.

void QAbstractButton::nextCheckState ()   [virtual protected]

Данный виртуальный обработчик сообщений вызывается при нажатии кнопки. Реализация по умолчанию вызывает setChecked(!isChecked()) если isCheckable() возвращает true. Данный обработчик позволяет подклассам устанавливать промежуточные состояния кнопки.

Смотрите также checkStateSet().

void QAbstractButton::pressed ()   [signal]

Данный сигнал испускается при нажатии кнопки.

Смотрите также released() и clicked().

void QAbstractButton::released ()   [signal]

Данный сигнал испускается при отпускании кнопки.

Смотрите также pressed(), clicked() и toggled().

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().

Смотрите также checked и clicked().


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5