/*! \reimp */ bool QButtonGroup::event( QEvent * e ) { if ( e->type() == QEvent::ChildInserted ) { QChildEvent * ce = (QChildEvent *) e; if ( radio_excl && ::qt_cast<QRadioButton*>(ce->child()) ) { QButton * button = (QButton *) ce->child(); if ( button->isToggleButton() && !button->isOn() && selected() && (selected()->focusPolicy() & TabFocus) != 0 ) button->setFocusPolicy( (FocusPolicy)(button->focusPolicy() & ~TabFocus) ); } } return QGroupBox::event( e ); }
void QButtonGroup::buttonToggled( bool on ) { // introduce a QButtonListIt if calling anything if ( !on || !excl_grp && !radio_excl ) return; QButton *bt = ::qt_cast<QButton*>(sender()); // object that sent the signal #if defined(QT_CHECK_NULL) Q_ASSERT( bt ); Q_ASSERT( bt->isToggleButton() ); #endif if ( !excl_grp && !::qt_cast<QRadioButton*>(bt) ) return; QButtonItem * i = buttons->first(); bool hasTabFocus = FALSE; while( i != 0 && hasTabFocus == FALSE ) { if ( ( excl_grp || ::qt_cast<QRadioButton*>(i->button) ) && (i->button->focusPolicy() & TabFocus) ) hasTabFocus = TRUE; i = buttons->next(); } i = buttons->first(); while( i ) { if ( bt != i->button && i->button->isToggleButton() && i->button->isOn() && ( excl_grp || ::qt_cast<QRadioButton*>(i->button) ) ) i->button->setOn( FALSE ); if ( ( excl_grp || ::qt_cast<QRadioButton*>(i->button) ) && i->button->isToggleButton() && hasTabFocus ) i->button->setFocusPolicy( (FocusPolicy)(i->button->focusPolicy() & ~TabFocus) ); i = buttons->next(); } if ( hasTabFocus ) bt->setFocusPolicy( (FocusPolicy)(bt->focusPolicy() | TabFocus) ); }