/*! Removes and deletes all items in this layout. */ void QLayout::deleteAllItems() { QLayoutIterator it = iterator(); QLayoutItem *l; while ( (l=it.takeCurrent()) ) delete l; }
void QwtPlot::printLegend(QPainter *painter, const QRect &rect) const { if ( !d_legend || d_legend->isEmpty() ) return; QLayout *l = d_legend->contentsWidget()->layout(); if ( l == 0 || !l->inherits("QwtDynGridLayout") ) return; QwtDynGridLayout *legendLayout = (QwtDynGridLayout *)l; uint numCols = legendLayout->columnsForWidth(rect.width()); QValueList<QRect> itemRects = legendLayout->layoutItems(rect, numCols); int index = 0; QLayoutIterator layoutIterator = legendLayout->iterator(); for ( QLayoutItem *item = layoutIterator.current(); item != 0; item = ++layoutIterator) { QWidget *w = item->widget(); if ( w ) { painter->save(); painter->setClipping(TRUE); QwtPainter::setClipRect(painter, itemRects[index]); printLegendItem(painter, w, itemRects[index]); index++; painter->restore(); } } }
static void invalidateRecursive( QLayoutItem *lay ) { lay->invalidate(); QLayoutIterator it = lay->iterator(); QLayoutItem *child; while ( (child = it.current() ) ) { invalidateRecursive( child ); ++it; } }
// virtual KClassicGreeter::~KClassicGreeter() { abort(); if (!layoutItem) { delete loginEdit; delete passwdEdit; return; } QLayoutIterator it = static_cast<QLayout *>(layoutItem)->iterator(); for (QLayoutItem *itm = it.current(); itm; itm = ++it) delete itm->widget(); delete layoutItem; }
/** Set the shown dimension * * @param dim :: -1 = None, 0 = X, 1 = Y. 2+ reserved for higher dimensions */ void DimensionSliceWidget::setShownDim(int dim) { m_shownDim = dim; ui.btnX->blockSignals(true); ui.btnY->blockSignals(true); ui.btnX->setChecked( m_shownDim == 0 ); ui.btnY->setChecked( m_shownDim == 1 ); ui.btnX->blockSignals(false); ui.btnY->blockSignals(false); /// Slice if dimension is not X or Y AND is not integrated bool slicing = (m_shownDim == -1 && !m_dim->getIsIntegrated()); ui.horizontalSlider->setVisible( slicing ); ui.doubleSpinBox->setVisible( slicing ); ui.lblUnits->setVisible( slicing ); // Make the spacer expand to keep the buttons in the same spot if (slicing) { if (ui.horizontalSpacer != NULL) { // Remove the 3rd item (if it's not gone already) = the spacer QLayoutIterator it = ui.horizontalLayout->iterator(); ++it; ++it; ++it; ui.horizontalLayout->removeItem(it.current()); delete ui.horizontalSpacer; ui.horizontalSpacer = NULL; } } else { // Put the spacer back, if needed if (ui.horizontalSpacer == NULL) { ui.horizontalSpacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); ui.horizontalLayout->insertSpacerItem(3, ui.horizontalSpacer ); } } // Hide or show the rebinning controls ui.spinBins->setVisible(m_showRebinControls && !slicing); ui.spinThickness->setVisible(m_showRebinControls && slicing); ui.lblRebinInfo->setVisible(m_showRebinControls); if (slicing) ui.lblRebinInfo->setText("thick"); else ui.lblRebinInfo->setText("bins"); this->update(); }
void KDialog::resizeLayout( QLayoutItem *lay, int margin, int spacing ) { QLayoutIterator it = lay->iterator(); QLayoutItem *child; while ( (child = it.current() ) ) { resizeLayout( child, margin, spacing ); ++it; } if( lay->layout() ) { lay->layout()->setMargin( margin ); lay->layout()->setSpacing( spacing ); } }
QLayout *rw_recurseFindLayout(QLayout *lo, QWidget *w) { //printf("scanning layout: %p\n", lo); QLayoutIterator it = lo->iterator(); for(QLayoutItem *i; (i = it.current()); ++it) { //printf("found: %p,%p\n", i->layout(), i->widget()); QLayout *slo = i->layout(); if(slo) { QLayout *tlo = rw_recurseFindLayout(slo, w); if(tlo) return tlo; } else if(i->widget() == w) return lo; } return 0; }
static bool removeWidget( QLayoutItem *lay, QWidget *w ) { bool foo = FALSE; QLayoutIterator it = lay->iterator(); QLayoutItem *child; while ( (child = it.current() ) ) { if ( child->widget() == w ) { it.deleteCurrent(); lay->invalidate(); foo = TRUE; } else if ( removeWidget( child, w ) ) { lay->invalidate(); foo = TRUE; } else { ++it; } } return foo; }
void QGroupBox::setTextSpacer() { if ( !d->spacer ) return; int h = 0; int w = 0; if ( isCheckable() || lenvisible ) { QFontMetrics fm = fontMetrics(); int fh = fm.height(); if ( isCheckable() ) { #ifndef QT_NO_CHECKBOX fh = d->checkbox->sizeHint().height() + 2; w = d->checkbox->sizeHint().width() + 2*fm.width( "xx" ); #endif } else { fh = fm.height(); w = fm.width( str, lenvisible ) + 2*fm.width( "xx" ); } h = frameRect().y(); if ( layout() ) { int m = layout()->margin(); int sp = layout()->spacing(); // do we have a child layout? for ( QLayoutIterator it = layout()->iterator(); it.current(); ++it ) { if ( it.current()->layout() ) { m += it.current()->layout()->margin(); sp = QMAX( sp, it.current()->layout()->spacing() ); break; } } h = QMAX( fh-m, h ); h += QMAX( sp - (h+m - fh), 0 ); } } d->spacer->changeSize( w, h, QSizePolicy::Minimum, QSizePolicy::Fixed ); }
void MainWindow::setGrip() { QLayoutIterator it = lay->iterator(); QLayoutItem *lastItem = NULL; for (;;){ QLayoutItem *item = it.current(); if (item == NULL) break; lastItem = item; if (++it == NULL) break; } if (lastItem == NULL) return; if (lastItem->layout() && (lastItem->layout() == h_lay)){ QLayoutIterator it = h_lay->iterator(); for (;;){ QLayoutItem *item = it.current(); if (item == NULL) break; QWidget *w = item->widget(); if (w && (w != m_grip)) return; if (++it == NULL) break; } } QWidget *oldWidget = NULL; QWidget *w = lastItem->widget(); if (m_grip){ delete m_grip; m_grip = NULL; } if (h_lay){ QLayoutIterator it = h_lay->iterator(); for (;;){ QLayoutItem *item = it.current(); if (item == NULL) break; oldWidget = item->widget(); if (oldWidget) break; if (++it == NULL) break; } delete h_lay; h_lay = NULL; it = lay->iterator(); for (;;){ QLayoutItem *item = it.current(); if (item == NULL) break; lastItem = item; if (++it == NULL) break; } if (lastItem) w = lastItem->widget(); } if (oldWidget && w){ int index = lay->findWidget(w); lay->insertWidget(index - 1, oldWidget); } if (w && (w->sizePolicy().verData() == QSizePolicy::Fixed) && !statusBar()->isVisible()){ w->reparent(this, QPoint()); w->reparent(main, QPoint()); h_lay = new QHBoxLayout(lay); h_lay->addWidget(w); h_lay->addSpacing(2); m_grip = new QSizeGrip(main); #ifdef WIN32 m_grip->installEventFilter(this); #endif m_grip->setFixedSize(m_grip->sizeHint()); h_lay->addWidget(m_grip, 0, AlignBottom); w->show(); m_grip->show(); } }
void QwtPlot::printLegend(QPainter *painter, const QRect &rect) const { if ( !legend() || legend()->isEmpty() ) return; QLayout *l = legend()->contentsWidget()->layout(); if ( l == 0 || !l->inherits("QwtDynGridLayout") ) return; QwtDynGridLayout *legendLayout = (QwtDynGridLayout *)l; uint numCols = legendLayout->columnsForWidth(rect.width()); #if QT_VERSION < 0x040000 QValueList<QRect> itemRects = legendLayout->layoutItems(rect, numCols); #else QList<QRect> itemRects = legendLayout->layoutItems(rect, numCols); #endif int index = 0; #if QT_VERSION < 0x040000 QLayoutIterator layoutIterator = legendLayout->iterator(); for ( QLayoutItem *item = layoutIterator.current(); item != 0; item = ++layoutIterator) { #else for ( int i = 0; i < legendLayout->count(); i++ ) { QLayoutItem *item = legendLayout->itemAt(i); #endif QWidget *w = item->widget(); if ( w ) { painter->save(); painter->setClipping(true); QwtPainter::setClipRect(painter, itemRects[index]); printLegendItem(painter, w, itemRects[index]); index++; painter->restore(); } } } /*! Print the legend item into a given rectangle. \param painter Painter \param w Widget representing a legend item \param rect Bounding rectangle */ void QwtPlot::printLegendItem(QPainter *painter, const QWidget *w, const QRect &rect) const { if ( w->inherits("QwtLegendItem") ) { QwtLegendItem *item = (QwtLegendItem *)w; painter->setFont(item->font()); item->drawItem(painter, rect); } } /*! \brief Paint a scale into a given rectangle. Paint the scale into a given rectangle. \param painter Painter \param axisId Axis \param startDist Start border distance \param endDist End border distance \param baseDist Base distance \param rect Bounding rectangle */ void QwtPlot::printScale(QPainter *painter, int axisId, int startDist, int endDist, int baseDist, const QRect &rect) const { if (!axisEnabled(axisId)) return; const QwtScaleWidget *scaleWidget = axisWidget(axisId); if ( scaleWidget->isColorBarEnabled() && scaleWidget->colorBarWidth() > 0) { const QwtMetricsMap map = QwtPainter::metricsMap(); QRect r = map.layoutToScreen(rect); r.setWidth(r.width() - 1); r.setHeight(r.height() - 1); scaleWidget->drawColorBar(painter, scaleWidget->colorBarRect(r)); const int off = scaleWidget->colorBarWidth() + scaleWidget->spacing(); if ( scaleWidget->scaleDraw()->orientation() == Qt::Horizontal ) baseDist += map.screenToLayoutY(off); else baseDist += map.screenToLayoutX(off); } QwtScaleDraw::Alignment align; int x, y, w; switch(axisId) { case yLeft: { x = rect.right() - baseDist; y = rect.y() + startDist; w = rect.height() - startDist - endDist; align = QwtScaleDraw::LeftScale; break; } case yRight: { x = rect.left() + baseDist; y = rect.y() + startDist; w = rect.height() - startDist - endDist; align = QwtScaleDraw::RightScale; break; } case xTop: { x = rect.left() + startDist; y = rect.bottom() - baseDist; w = rect.width() - startDist - endDist; align = QwtScaleDraw::TopScale; break; } case xBottom: { x = rect.left() + startDist; y = rect.top() + baseDist; w = rect.width() - startDist - endDist; align = QwtScaleDraw::BottomScale; break; } default: return; } scaleWidget->drawTitle(painter, align, rect); painter->save(); painter->setFont(scaleWidget->font()); QPen pen = painter->pen(); pen.setWidth(scaleWidget->penWidth()); painter->setPen(pen); QwtScaleDraw *sd = (QwtScaleDraw *)scaleWidget->scaleDraw(); const QPoint sdPos = sd->pos(); const int sdLength = sd->length(); sd->move(x, y); sd->setLength(w); #if QT_VERSION < 0x040000 sd->draw(painter, scaleWidget->palette().active()); #else QPalette palette = scaleWidget->palette(); palette.setCurrentColorGroup(QPalette::Active); sd->draw(painter, palette); #endif // reset previous values sd->move(sdPos); sd->setLength(sdLength); painter->restore(); } /*! Print the canvas into a given rectangle. \param painter Painter \param map Maps mapping between plot and paint device coordinates \param boundingRect Bounding rectangle \param canvasRect Canvas rectangle \param pfilter Print filter \sa QwtPlotPrintFilter */ void QwtPlot::printCanvas(QPainter *painter, const QRect &boundingRect, const QRect &canvasRect, const QwtScaleMap map[axisCnt], const QwtPlotPrintFilter &pfilter) const { if ( pfilter.options() & QwtPlotPrintFilter::PrintBackground ) { QBrush bgBrush; #if QT_VERSION >= 0x040000 bgBrush = canvas()->palette().brush(backgroundRole()); #else QColorGroup::ColorRole role = QPalette::backgroundRoleFromMode( backgroundMode() ); bgBrush = canvas()->colorGroup().brush( role ); #endif QRect r = boundingRect; if ( !(pfilter.options() & QwtPlotPrintFilter::PrintFrameWithScales) ) { r = canvasRect; #if QT_VERSION >= 0x040000 // Unfortunately the paint engines do no always the same const QPaintEngine *pe = painter->paintEngine(); if ( pe ) { switch(painter->paintEngine()->type() ) { case QPaintEngine::Raster: case QPaintEngine::X11: break; default: r.setWidth(r.width() - 1); r.setHeight(r.height() - 1); break; } } #else if ( painter->device()->isExtDev() ) { r.setWidth(r.width() - 1); r.setHeight(r.height() - 1); } #endif } QwtPainter::fillRect(painter, r, bgBrush); } if ( pfilter.options() & QwtPlotPrintFilter::PrintFrameWithScales ) { painter->save(); painter->setPen(QPen(Qt::black)); painter->setBrush(QBrush(Qt::NoBrush)); QwtPainter::drawRect(painter, boundingRect); painter->restore(); } painter->setClipping(true); QwtPainter::setClipRect(painter, canvasRect); drawItems(painter, canvasRect, map, pfilter); }
/*! Insert a new item for a plot item \param plotItem Plot item \param legendItem New legend item \note The parent of item will be changed to QwtLegend::contentsWidget() */ void QwtLegend::insert(const QwtPlotItem *plotItem, QWidget *legendItem) { if ( legendItem == NULL || plotItem == NULL ) return; QWidget *contentsWidget = d_data->view->contentsWidget; if ( legendItem->parent() != contentsWidget ) { #if QT_VERSION >= 0x040000 legendItem->setParent(contentsWidget); #else legendItem->reparent(contentsWidget, QPoint(0, 0)); #endif } legendItem->show(); d_data->map.insert(plotItem, legendItem); layoutContents(); if ( contentsWidget->layout() ) { #if QT_VERSION >= 0x040000 contentsWidget->layout()->addWidget(legendItem); #endif // set tab focus chain QWidget *w = NULL; #if QT_VERSION < 0x040000 QLayoutIterator layoutIterator = contentsWidget->layout()->iterator(); for ( QLayoutItem *item = layoutIterator.current(); item != 0; item = ++layoutIterator) { #else for (int i = 0; i < contentsWidget->layout()->count(); i++) { QLayoutItem *item = contentsWidget->layout()->itemAt(i); #endif if ( w && item->widget() ) { QWidget::setTabOrder(w, item->widget()); w = item->widget(); } } } if ( parentWidget() && parentWidget()->layout() == NULL ) { /* updateGeometry() doesn't post LayoutRequest in certain situations, like when we are hidden. But we want the parent widget notified, so it can show/hide the legend depending on its items. */ #if QT_VERSION < 0x040000 QApplication::postEvent(parentWidget(), new QEvent(QEvent::LayoutHint)); #else QApplication::postEvent(parentWidget(), new QEvent(QEvent::LayoutRequest)); #endif } } QWidget *QwtLegend::find(const QwtPlotItem *plotItem) const { return d_data->map.find(plotItem); } QwtPlotItem *QwtLegend::find(const QWidget *legendItem) const { return d_data->map.find(legendItem); } //! Find the corresponding item for a plotItem and remove it from the item list. void QwtLegend::remove(const QwtPlotItem *plotItem) { QWidget *legendItem = d_data->map.find(plotItem); d_data->map.remove(legendItem); delete legendItem; }
void QwtPolarPlot::renderLegend( QPainter *painter, const QRect &rect ) const { #if 1 // Shift this code into QwtLegend, so that Qwt/QwtPolar can share it #endif if ( !legend() || legend()->isEmpty() ) return; QLayout *l = legend()->contentsWidget()->layout(); if ( l == 0 || !l->inherits( "QwtDynGridLayout" ) ) return; QwtDynGridLayout *legendLayout = ( QwtDynGridLayout * )l; uint numCols = legendLayout->columnsForWidth( rect.width() ); #if QT_VERSION < 0x040000 QValueList<QRect> itemRects = legendLayout->layoutItems( rect, numCols ); #else QList<QRect> itemRects = legendLayout->layoutItems( rect, numCols ); #endif int index = 0; #if QT_VERSION < 0x040000 QLayoutIterator layoutIterator = legendLayout->iterator(); for ( QLayoutItem *item = layoutIterator.current(); item != 0; item = ++layoutIterator ) { #else for ( int i = 0; i < legendLayout->count(); i++ ) { QLayoutItem *item = legendLayout->itemAt( i ); #endif QWidget *w = item->widget(); if ( w ) { painter->save(); painter->setClipping( true ); QwtPainter::setClipRect( painter, itemRects[index] ); renderLegendItem( painter, w, itemRects[index] ); index++; painter->restore(); } } } /*! Render the legend item into a given rectangle. \param painter Painter \param w Widget representing a legend item \param rect Bounding rectangle */ void QwtPolarPlot::renderLegendItem( QPainter *painter, const QWidget *w, const QRect &rect ) const { #if 1 // Shift this code into QwtLegend, so that Qwt/QwtPolar can share it #endif if ( w->inherits( "QwtLegendItem" ) ) { QwtLegendItem *item = ( QwtLegendItem * )w; painter->setFont( item->font() ); item->drawItem( painter, rect ); } }
void QwtPlot::printLegend(QPainter *painter, const QRect &rect) const { if ( !legend() || legend()->isEmpty() ) return; QLayout *l = legend()->contentsWidget()->layout(); if ( l == 0 || !l->inherits("QwtDynGridLayout") ) return; QwtDynGridLayout *legendLayout = (QwtDynGridLayout *)l; uint numCols = legendLayout->columnsForWidth(rect.width()); #if QT_VERSION < 0x040000 QValueList<QRect> itemRects = legendLayout->layoutItems(rect, numCols); #else QList<QRect> itemRects = legendLayout->layoutItems(rect, numCols); #endif int index = 0; #if QT_VERSION < 0x040000 QLayoutIterator layoutIterator = legendLayout->iterator(); for ( QLayoutItem *item = layoutIterator.current(); item != 0; item = ++layoutIterator) { #else for ( int i = 0; i < legendLayout->count(); i++ ) { QLayoutItem *item = legendLayout->itemAt(i); #endif QWidget *w = item->widget(); if ( w ) { painter->save(); painter->setClipping(true); QwtPainter::setClipRect(painter, itemRects[index]); printLegendItem(painter, w, itemRects[index]); index++; painter->restore(); } } } /*! Print the legend item into a given rectangle. \param painter Painter \param w Widget representing a legend item \param rect Bounding rectangle */ void QwtPlot::printLegendItem(QPainter *painter, const QWidget *w, const QRect &rect) const { if ( w->inherits("QwtLegendItem") ) { QwtLegendItem *item = (QwtLegendItem *)w; painter->setFont(item->font()); item->drawItem(painter, rect); } } /*! \brief Paint a scale into a given rectangle. Paint the scale into a given rectangle. \param painter Painter \param axisId Axis \param startDist Start border distance \param endDist End border distance \param baseDist Base distance \param rect Bounding rectangle */ void QwtPlot::printScale(QPainter *painter, int axisId, int startDist, int endDist, int baseDist, const QRect &rect) const { if (!axisEnabled(axisId)) return; QwtScaleDraw::Alignment align; int x, y, w; switch(axisId) { case yLeft: { x = rect.right() - baseDist + 1; y = rect.y() + startDist; w = rect.height() - startDist - endDist; align = QwtScaleDraw::LeftScale; break; } case yRight: { x = rect.left() + baseDist; y = rect.y() + startDist; w = rect.height() - startDist - endDist; align = QwtScaleDraw::RightScale; break; } case xTop: { x = rect.left() + startDist; y = rect.bottom() - baseDist + 1; w = rect.width() - startDist - endDist; align = QwtScaleDraw::TopScale; break; } case xBottom: { x = rect.left() + startDist; y = rect.top() + baseDist; w = rect.width() - startDist - endDist; align = QwtScaleDraw::BottomScale; break; } default: return; } const QwtScaleWidget *scaleWidget = axisWidget(axisId); scaleWidget->drawTitle(painter, align, rect); painter->save(); painter->setFont(scaleWidget->font()); QwtScaleDraw *sd = (QwtScaleDraw *)scaleWidget->scaleDraw(); const QPoint sdPos = sd->pos(); const int sdLength = sd->length(); sd->move(x, y); sd->setLength(w); #if QT_VERSION < 0x040000 sd->draw(painter, scaleWidget->palette().active()); #else QPalette palette = scaleWidget->palette(); palette.setCurrentColorGroup(QPalette::Active); sd->draw(painter, palette); #endif // reset previous values sd->move(sdPos); sd->setLength(sdLength); painter->restore(); } /*! Print the canvas into a given rectangle. \param painter Painter \param map Maps mapping between plot and paint device coordinates \param canvasRect Bounding rectangle \param pfilter Print filter \sa QwtPlotPrintFilter */ void QwtPlot::printCanvas(QPainter *painter, const QRect &canvasRect, const QwtArray<QwtScaleMap> &map, const QwtPlotPrintFilter &pfilter) const { if ( pfilter.options() & QwtPlotPrintFilter::PrintCanvasBackground ) { painter->setPen(Qt::NoPen); QBrush bgBrush; #if QT_VERSION >= 0x040000 bgBrush = canvas()->palette().brush(backgroundRole()); #else QColorGroup::ColorRole role = QPalette::backgroundRoleFromMode( backgroundMode() ); bgBrush = canvas()->colorGroup().brush( role ); #endif painter->setBrush(bgBrush); int x1 = 0; int x2 = 0; int y1 = 0; int y2 = 0; #if QT_VERSION >= 0x040000 switch(painter->device()->paintEngine()->type()) { case QPaintEngine::PostScript: x2 = 1; y2 = 1; break; default:; } #endif const QwtMetricsMap map = QwtPainter::metricsMap(); x1 = map.screenToLayoutX(x1); x2 = map.screenToLayoutX(x2); y1 = map.screenToLayoutY(y1); y2 = map.screenToLayoutY(y2); QwtPainter::drawRect(painter, canvasRect.x() + x1, canvasRect.y() + y1, canvasRect.width() - x2, canvasRect.height() - y2); } else { // Paint the canvas borders instead. painter->setPen(QPen(Qt::black)); painter->setBrush(QBrush(Qt::NoBrush)); QwtPainter::drawRect(painter, canvasRect); } painter->setClipping(true); QwtPainter::setClipRect(painter, canvasRect); drawItems(painter, canvasRect, map, pfilter); }
bool QLayout::eventFilter( QObject *o, QEvent *e ) { if ( !enabled ) return FALSE; // nothing we can do, should do or want to do if ( o == this && e->type() == QEvent::ChildRemoved ) { //we cannot implement childEvent() or event() because of //###binary compatibility. QChildEvent *c = (QChildEvent*)e; QLayoutIterator it = iterator(); QLayoutItem *item; while ( (item = it.current() ) ) { if ( item == (QLayout*)c->child() ) { it.takeCurrent(); invalidate(); return FALSE; } ++it; } return FALSE; } if ( !o->isWidgetType() ) return FALSE; switch ( e->type() ) { case QEvent::Resize: if ( activated ) { QResizeEvent *r = (QResizeEvent*)e; int mbh = 0; #ifndef QT_NO_MENUBAR if ( menubar && !menubar->isHidden() && !menubar->isTopLevel() ) mbh = menubar->heightForWidth( r->size().width() ); #endif int b = marginImpl ? 0 : outsideBorder; setGeometry( QRect( b, mbh + b, r->size().width() - 2*b, r->size().height() - mbh - 2*b ) ); } else { activate(); } break; case QEvent::ChildRemoved: { QChildEvent *c = (QChildEvent*)e; if ( c->child()->isWidgetType() ) { QWidget *w = (QWidget*)c->child(); #ifndef QT_NO_MENUBAR if ( w == menubar ) menubar = 0; #endif if ( removeWidget( this, w ) ) { QEvent *lh = new QEvent( QEvent::LayoutHint ); QApplication::postEvent( o, lh ); } } break; } case QEvent::ChildInserted: if ( topLevel && autoNewChild ) { QChildEvent *c = (QChildEvent*)e; if ( c->child()->isWidgetType() ) { QWidget *w = (QWidget*)c->child(); if ( !w->isTopLevel() ) { #ifndef QT_NO_MENUBAR if ( w->inherits( "QMenuBar" ) && ( !w->parent() || !w->parent()->inherits( "QToolBar" ) ) ) menubar = (QMenuBar*)w; else #endif addItem( new QWidgetItem( w ) ); QEvent *lh = new QEvent( QEvent::LayoutHint ); QApplication::postEvent( o, lh ); } } } break; case QEvent::LayoutHint: activate(); break; default: break; } return QObject::eventFilter( o, e ); }
void KstBasicDialogI::init() { KstBasicPluginPtr ptr; if (_newDialog) { ptr = kst_cast<KstBasicPlugin>(KstDataObject::plugin(_pluginName)); } else { ptr = kst_cast<KstBasicPlugin>(findObject(_pluginName)); } Q_ASSERT(ptr); //shouldn't happen if (_grid) { //reset QLayoutIterator it = _grid->iterator(); while(QLayoutItem *item = it.takeCurrent()) { delete item->widget(); delete item; } delete _grid; _grid = 0; } int cnt = 0; int numInputOutputs = ptr->inputVectorList().count() + ptr->inputScalarList().count() + ptr->inputStringList().count() + ptr->outputVectorList().count() + ptr->outputScalarList().count() + ptr->outputStringList().count(); _grid = new QGridLayout(_w->_frame, numInputOutputs + 1, 2, 0, 8); _grid->setColStretch(1,1); _grid->setColStretch(0,0); //create input widgets //First, the inputVectors... QStringList iv = ptr->inputVectorList(); QStringList::ConstIterator ivI = iv.begin(); for (; ivI != iv.end(); ++ivI) { createInputVector(*ivI, ++cnt); } //Now, the inputScalars... QStringList is = ptr->inputScalarList(); QStringList::ConstIterator isI = is.begin(); for (; isI != is.end(); ++isI) { createInputScalar(*isI, ++cnt); } //Finally, the inputStrings... QStringList istr = ptr->inputStringList(); QStringList::ConstIterator istrI = istr.begin(); for (; istrI != istr.end(); ++istrI) { createInputString(*istrI, ++cnt); } //create sep cnt++; QFrame* line = new QFrame(_w->_frame); line->setFrameShadow(QFrame::Sunken); line->setFrameShape(QFrame::HLine); _grid->addMultiCellWidget(line, cnt, cnt, 0, 1); line->show(); cnt++; //create output widgets //output vectors... QStringList ov = ptr->outputVectorList(); QStringList::ConstIterator ovI = ov.begin(); for (; ovI != ov.end(); ++ovI) { createOutputWidget(*ovI, ++cnt); } //output scalars... QStringList os = ptr->outputScalarList(); QStringList::ConstIterator osI = os.begin(); for (; osI != os.end(); ++osI) { createOutputWidget(*osI, ++cnt); } //ouput strings... QStringList ostr = ptr->outputStringList(); QStringList::ConstIterator ostrI = ostr.begin(); for (; ostrI != ostr.end(); ++ostrI) { createOutputWidget(*ostrI, ++cnt); } }