コード例 #1
0
void WidgetHandle::changeGridLayoutItemSpan()
{
    QDesignerLayoutDecorationExtension *deco = qt_extension<QDesignerLayoutDecorationExtension*>(core()->extensionManager(), m_widget->parentWidget());
    if (!deco)
       return;
    QGridLayout *grid = managedLayoutOf<QGridLayout>(m_formWindow->core(), m_widget);
    if (!grid)
       return;

    const int index = deco->indexOf(m_widget);
    const QRect info = deco->itemInfo(index);
    const int top = deco->findItemAt(info.top() - 1, info.left());
    const int left = deco->findItemAt(info.top(), info.left() - 1);
    const int bottom = deco->findItemAt(info.bottom() + 1, info.left());
    const int right = deco->findItemAt(info.top(), info.right() + 1);

    const QPoint pt = m_origGeom.center() - m_widget->geometry().center();

    ChangeLayoutItemGeometry *cmd = 0;

    switch (m_type) {
    default:
       break;

    case WidgetHandle::Top: {
       if (pt.y() < 0 && info.height() > 1) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y() + 1, info.x(), info.height() - 1, info.width());
       } else if (pt.y() > 0 && top != -1 && grid->itemAt(top)->spacerItem()) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y() - 1, info.x(), info.height() + 1, info.width());
       }
    }
       break;

    case WidgetHandle::Left: {
       if (pt.x() < 0 && info.width() > 1) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y(), info.x() + 1, info.height(), info.width() - 1);
       } else if (pt.x() > 0 && left != -1 && grid->itemAt(left)->spacerItem()) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y(), info.x() - 1, info.height(), info.width() + 1);
       }
    }
       break;

    case WidgetHandle::Right: {
       if (pt.x() > 0 && info.width() > 1) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y(), info.x(), info.height(), info.width() - 1);
       } else if (pt.x() < 0 && right != -1 && grid->itemAt(right)->spacerItem()) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y(), info.x(), info.height(), info.width() + 1);
       }
    }
       break;

    case WidgetHandle::Bottom: {
       if (pt.y() > 0 && info.width() > 1) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y(), info.x(), info.height() - 1, info.width());
       } else if (pt.y() < 0 && bottom != -1 && grid->itemAt(bottom)->spacerItem()) {
           cmd = new ChangeLayoutItemGeometry(m_formWindow);
           cmd->init(m_widget, info.y(), info.x(), info.height() + 1, info.width());
       }
    }
       break;
    }

    if (cmd != 0) {
       m_formWindow->commandHistory()->push(cmd);
    } else {
       grid->invalidate();
       grid->activate();
       m_formWindow->clearSelection(false);
       m_formWindow->selectWidget(m_widget);
    }
}
コード例 #2
0
void QGridLayoutProto::invalidate()
{
  QGridLayout *item = qscriptvalue_cast<QGridLayout*>(thisObject());
  if (item)
    item->invalidate();
}
コード例 #3
0
void ElogEntryI::customEvent(QCustomEvent* event) {
  KstELOGAttribStruct	attrib;
  ELOGAttribList* pAttribs;
  QSizePolicy sizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
  QGridLayout* topGrid;
  QGridLayout* grid;
  QLabel* label;
  QLineEdit* lineedit;
  QCheckBox* checkbox;
  QComboBox* combobox;
  QRadioButton* radio;
  QHButtonGroup* buttonGroup;
  QString strLabel;
  unsigned int i;
  unsigned int j;

  if( event->type() == KstELOGAttrsEvent ) {
    pAttribs = (ELOGAttribList*)event->data();
    _attribs = *pAttribs;

    delete _frameWidget;
    _frameWidget = 0L;

    topGrid = dynamic_cast<QGridLayout*>(frameAttrs->layout());
    if (topGrid) {
      topGrid->invalidate();
      _frameWidget = new QWidget(frameAttrs, "Frame Widget");
      if( _frameWidget != NULL ) {
        setEnabled( TRUE );

        topGrid->addWidget(_frameWidget, 0, 0);
        grid = new QGridLayout(_frameWidget, pAttribs->count(), 2);
        grid->setMargin(6);
        grid->setSpacing(5);

        for( i=0; i<_attribs.count(); i++ ) {
          attrib = _attribs[i];

          strLabel = attrib.attribName;
          if( attrib.bMandatory ) {
            strLabel += "*";
          }
          strLabel += ":";
          label = new QLabel( strLabel, _frameWidget );
          grid->addWidget( label, i, 0, Qt::AlignLeft);

          switch( attrib.type ) {
          case AttribTypeText:
            lineedit = new QLineEdit( _frameWidget );
            grid->addWidget( lineedit, i, 1);
            _attribs[i].pWidget = lineedit;
            break;

          case AttribTypeBool:
            checkbox = new QCheckBox( _frameWidget );
            grid->addWidget( checkbox, i, 1);
            _attribs[i].pWidget = checkbox;
            break;

          case AttribTypeCombo:
            combobox = new QComboBox( _frameWidget );
            grid->addWidget( combobox, i, 1);
            for( j=0; j<attrib.values.count(); j++ ) {
              combobox->insertItem( attrib.values[j], -1 );
            }
            if( !attrib.bMandatory ) {
              combobox->insertItem( "", -1 );
            }
            _attribs[i].pWidget = combobox;
            break;

          case AttribTypeRadio:
            buttonGroup = new QHButtonGroup( "", _frameWidget );
            buttonGroup->setSizePolicy( sizePolicy );
            buttonGroup->setRadioButtonExclusive( TRUE );
            buttonGroup->setAlignment( AlignLeft );
            buttonGroup->setInsideMargin( 0 );
            buttonGroup->setLineWidth( 0 );
            grid->addWidget( buttonGroup, i, 1 );
            for( j=0; j<attrib.values.count(); j++ ) {
              radio = new QRadioButton( attrib.values[j], buttonGroup );
              if( j == 0 ) {
                radio->setChecked( TRUE );
              }
            }
            _attribs[i].pWidget = buttonGroup;
            break;

          case AttribTypeCheck:
            buttonGroup = new QHButtonGroup( "", _frameWidget );
            buttonGroup->setSizePolicy( sizePolicy );
            buttonGroup->setAlignment( AlignLeft );
            buttonGroup->setInsideMargin( 0 );
            buttonGroup->setLineWidth( 0 );
            grid->addWidget( buttonGroup, i, 1 );
            for( j=0; j<attrib.values.count(); j++ ) {
              checkbox = new QCheckBox( attrib.values[j], buttonGroup );
            }
            _attribs[i].pWidget = buttonGroup;
            break;
          }
        }

        _frameWidget->show( );
        _frameWidget->resize(_frameWidget->sizeHint());
        frameAttrs->resize(frameAttrs->sizeHint());
        resize(sizeHint());

        loadSettings( );
        setSettings( );
      }
    }
  }
}