/*!\reimp */ void Q3GroupBox::childEvent(QChildEvent *c) { QGroupBox::childEvent(c); if (!c->inserted() || !c->child()->isWidgetType()) return; if (d->grid) { insertWid((QWidget*)c->child()); } }
/*! Changes the layout of the group box. This function is only useful in combination with the default constructor that does not take any layout information. This function will put all existing children in the new layout. It is not good Qt programming style to call this function after children have been inserted. Sets the number of columns or rows to be \a strips, depending on \a direction. \sa orientation columns */ void Q3GroupBox::setColumnLayout(int strips, Qt::Orientation direction) { if (layout()) delete layout(); d->vbox = 0; d->grid = 0; if (strips < 0) // if 0, we create the d->vbox but not the d->grid. See below. return; d->vbox = new QVBoxLayout(this, d->marg, 0); d->nCols = 0; d->nRows = 0; d->dir = direction; // Send all child events and ignore them. Otherwise we will end up // with doubled insertion. This won't do anything because d->nCols == // d->nRows == 0. QApplication::sendPostedEvents(this, QEvent::ChildInserted); // if 0 or smaller , create a vbox-layout but no grid. This allows // the designer to handle its own grid layout in a group box. if (strips <= 0) return; d->dir = direction; if (d->dir == Qt::Horizontal) { d->nCols = strips; d->nRows = 1; } else { d->nCols = 1; d->nRows = strips; } d->grid = new QGridLayout(d->nRows, d->nCols, d->spac); d->row = d->col = 0; d->grid->setAlignment(Qt::AlignTop); d->vbox->addLayout(d->grid); // Add all children QObjectList childList = children(); if (!childList.isEmpty()) { for (int i = 0; i < childList.size(); ++i) { QObject *o = childList.at(i); if (o->isWidgetType() && o != d->checkbox) insertWid(static_cast<QWidget *>(o)); } } }
/*!\reimp */ void QGroupBox::childEvent( QChildEvent *c ) { if ( !c->inserted() || !c->child()->isWidgetType() ) return; QWidget *w = (QWidget*)c->child(); #ifndef QT_NO_CHECKBOX if ( d->checkbox ) { if ( w == d->checkbox ) return; if ( d->checkbox->isChecked() ) { if ( !w->testWState( WState_ForceDisabled ) ) w->setEnabled( TRUE ); } else { if ( w->isEnabled() ) { w->setEnabled( FALSE ); ((QGroupBox*)w)->clearWState( WState_ForceDisabled ); } } } #endif if ( !grid ) return; insertWid( w ); }
/*! Changes the layout of the group box. This function is only useful in combination with the default constructor that does not take any layout information. This function will put all existing children in the new layout. It is not good Qt programming style to call this function after children have been inserted. Sets the number of columns or rows to be \a strips, depending on \a direction. \sa orientation columns */ void QGroupBox::setColumnLayout(int strips, Orientation direction) { if ( layout() ) delete layout(); vbox = 0; grid = 0; if ( strips < 0 ) // if 0, we create the vbox but not the grid. See below. return; vbox = new QVBoxLayout( this, marg, 0 ); d->spacer = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Fixed ); setTextSpacer(); vbox->addItem( d->spacer ); nCols = 0; nRows = 0; dir = direction; // Send all child events and ignore them. Otherwise we will end up // with doubled insertion. This won't do anything because nCols == // nRows == 0. QApplication::sendPostedEvents( this, QEvent::ChildInserted ); // if 0 or smaller , create a vbox-layout but no grid. This allows // the designer to handle its own grid layout in a group box. if ( strips <= 0 ) return; dir = direction; if ( dir == Horizontal ) { nCols = strips; nRows = 1; } else { nCols = 1; nRows = strips; } grid = new QGridLayout( nRows, nCols, spac ); row = col = 0; grid->setAlignment( AlignTop ); vbox->addLayout( grid ); // Add all children if ( children() ) { QObjectListIt it( *children() ); QWidget *w; while( (w=(QWidget *)it.current()) != 0 ) { ++it; if ( w->isWidgetType() #ifndef QT_NO_CHECKBOX && w != d->checkbox #endif ) insertWid( w ); } } }