⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractformbuilder.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        ui->setElementResources(ui_resources);    }}/*!    \internal*/DomConnections *QAbstractFormBuilder::saveConnections(){    return new DomConnections;}/*!    \internal*/DomWidget *QAbstractFormBuilder::createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive){    DomWidget *ui_widget = new DomWidget();    ui_widget->setAttributeClass(QLatin1String(widget->metaObject()->className()));    ui_widget->setElementProperty(computeProperties(widget));    if (recursive) {        if (QLayout *layout = widget->layout()) {            if (DomLayout *ui_layout = createDom(layout, 0, ui_parentWidget)) {                QList<DomLayout*> ui_layouts;                ui_layouts.append(ui_layout);                ui_widget->setElementLayout(ui_layouts);            }        }    }    // widgets, actions and action groups    QList<DomWidget*> ui_widgets;    QList<DomAction*> ui_actions;    QList<DomActionGroup*> ui_action_groups;    QList<QObject*> children;    // splitters need to store their children in the order specified by child indexes,    // not the order of the child list.    if (QSplitter *splitter = qobject_cast<QSplitter*>(widget)) {        for (int i = 0; i < splitter->count(); ++i)            children.append(splitter->widget(i));    } else {        children = widget->children();    }    if (qobject_cast<QMainWindow *>(widget) && widget->parent() && widget->parent()->metaObject()->className() == QLatin1String("qdesigner_internal::QDesignerPromotedWidget")) {        // add actions of parent promoted widget        QObjectList list = widget->parent()->children();        QListIterator<QObject *> it(list);        while (it.hasNext()) {            QObject *obj = it.next();            if (qobject_cast<QAction *>(obj) || qobject_cast<QActionGroup *>(obj))                children.append(obj);        }    }    foreach (QObject *obj, children) {        if (QWidget *childWidget = qobject_cast<QWidget*>(obj)) {            if (m_laidout.contains(childWidget) || recursive == false)                continue;            if (QMenu *menu = qobject_cast<QMenu *>(childWidget)) {                QList<QAction *> actions = menu->parentWidget()->actions();                QListIterator<QAction *> it(actions);                bool found = false;                while (it.hasNext()) {                    if (it.next()->menu() == menu)                        found = true;                }                if (!found)                    continue;            }            if (DomWidget *ui_child = createDom(childWidget, ui_widget)) {                ui_widgets.append(ui_child);            }        } else if (QAction *childAction = qobject_cast<QAction*>(obj)) {            if (childAction->actionGroup() != 0) {                // it will be added later.                continue;            }            if (DomAction *ui_action = createDom(childAction)) {                ui_actions.append(ui_action);            }        } else if (QActionGroup *childActionGroup = qobject_cast<QActionGroup*>(obj)) {            if (DomActionGroup *ui_action_group = createDom(childActionGroup)) {                ui_action_groups.append(ui_action_group);            }        }    }    // add-action    QList<DomActionRef*> ui_action_refs;    foreach (QAction *action, widget->actions()) {        if (DomActionRef *ui_action_ref = createActionRefDom(action)) {            ui_action_refs.append(ui_action_ref);        }    }    if (recursive)        ui_widget->setElementWidget(ui_widgets);    ui_widget->setElementAction(ui_actions);    ui_widget->setElementActionGroup(ui_action_groups);    ui_widget->setElementAddAction(ui_action_refs);    saveExtraInfo(widget, ui_widget, ui_parentWidget);    return ui_widget;}/*!    \internal*/DomActionRef *QAbstractFormBuilder::createActionRefDom(QAction *action){    QString name = action->objectName();    if (action->menu() != 0)        name = action->menu()->objectName();    DomActionRef *ui_action_ref = new DomActionRef();    if (action->isSeparator())        ui_action_ref->setAttributeName(QLatin1String("separator"));    else        ui_action_ref->setAttributeName(name);    return ui_action_ref;}/*!    \internal*/DomLayout *QAbstractFormBuilder::createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget){    Q_UNUSED(ui_layout)    DomLayout *lay = new DomLayout();    lay->setAttributeClass(QLatin1String(layout->metaObject()->className()));    lay->setElementProperty(computeProperties(layout));    QList<DomLayoutItem*> ui_items;    for (int idx=0; layout->itemAt(idx); ++idx) {        QLayoutItem *item = layout->itemAt(idx);        DomLayoutItem *ui_item = createDom(item, lay, ui_parentWidget);        if (ui_item)            ui_items.append(ui_item);    }    lay->setElementItem(ui_items);    return lay;}/*!    \internal*/DomLayoutItem *QAbstractFormBuilder::createDom(QLayoutItem *item, DomLayout *ui_layout, DomWidget *ui_parentWidget){    DomLayoutItem *ui_item = new DomLayoutItem();    if (item->widget())  {        ui_item->setElementWidget(createDom(item->widget(), ui_parentWidget));        m_laidout.insert(item->widget(), true);    } else if (item->layout()) {        ui_item->setElementLayout(createDom(item->layout(), ui_layout, ui_parentWidget));    } else if (item->spacerItem()) {        ui_item->setElementSpacer(createDom(item->spacerItem(), ui_layout, ui_parentWidget));    }    return ui_item;}/*!    \internal*/DomSpacer *QAbstractFormBuilder::createDom(QSpacerItem *spacer, DomLayout *ui_layout, DomWidget *ui_parentWidget){    Q_UNUSED(ui_layout);    Q_UNUSED(ui_parentWidget);    DomSpacer *ui_spacer = new DomSpacer();    QList<DomProperty*> properties;    DomProperty *prop = 0;    // sizeHint property    prop = new DomProperty();    prop->setAttributeName(QLatin1String("sizeHint"));    prop->setElementSize(new DomSize());    prop->elementSize()->setElementWidth(spacer->sizeHint().width());    prop->elementSize()->setElementHeight(spacer->sizeHint().height());    properties.append(prop);    // orientation property    prop = new DomProperty(); // ### we don't implemented the case where expandingDirections() is both Vertical and Horizontal    prop->setAttributeName(QLatin1String("orientation"));    prop->setElementEnum((spacer->expandingDirections() & Qt::Horizontal) ? QLatin1String("Qt::Horizontal") : QLatin1String("Qt::Vertical"));    properties.append(prop);    ui_spacer->setElementProperty(properties);    return ui_spacer;}/*!    \internal*/DomProperty *QAbstractFormBuilder::createProperty(QObject *obj, const QString &pname, const QVariant &v){    if (!checkProperty(obj, pname)) {        return 0;    }    DomProperty *dom_prop = new DomProperty();    const QMetaObject *meta = obj->metaObject();    int pindex = meta->indexOfProperty(pname.toLatin1());    if (pindex != -1) {        QMetaProperty meta_property = meta->property(pindex);        if (!meta_property.hasStdCppSet())            dom_prop->setAttributeStdset(0);    }    switch (v.type()) {        case QVariant::String: {            DomString *str = new DomString();            str->setText(v.toString());            if (pname == QLatin1String("objectName"))                str->setAttributeNotr(QLatin1String("true"));            dom_prop->setElementString(str);        } break;        case QVariant::ByteArray: {            dom_prop->setElementCstring(QString::fromUtf8(v.toByteArray()));        } break;        case QVariant::Int: {            dom_prop->setElementNumber(v.toInt());        } break;        case QVariant::UInt: {            dom_prop->setElementNumber(v.toUInt());        } break;        case QVariant::LongLong: {            dom_prop->setElementLongLong(v.toLongLong());        } break;        case QVariant::ULongLong: {            dom_prop->setElementLongLong(v.toULongLong());        } break;        case QVariant::Double: {            dom_prop->setElementDouble(v.toDouble());        } break;        case QVariant::Bool: {            dom_prop->setElementBool(v.toBool() ? QLatin1String("true") : QLatin1String("false"));        } break;        case QVariant::Char: {            DomChar *ch = new DomChar();            QChar character = v.toChar();            ch->setElementUnicode(character.unicode());            dom_prop->setElementChar(ch);        } break;        case QVariant::Point: {            DomPoint *pt = new DomPoint();            QPoint point = v.toPoint();            pt->setElementX(point.x());            pt->setElementY(point.y());            dom_prop->setElementPoint(pt);        } break;        case QVariant::PointF: {            DomPointF *ptf = new DomPointF();            QPointF pointf = v.toPointF();            ptf->setElementX(pointf.x());            ptf->setElementY(pointf.y());            dom_prop->setElementPointF(ptf);        } break;        case QVariant::Color: {            DomColor *clr = new DomColor();            QColor color = qvariant_cast<QColor>(v);            clr->setElementRed(color.red());            clr->setElementGreen(color.green());            clr->setElementBlue(color.blue());            dom_prop->setElementColor(clr);        } break;        case QVariant::Size: {            DomSize *sz = new DomSize();            QSize size = v.toSize();            sz->setElementWidth(size.width());            sz->setElementHeight(size.height());            dom_prop->setElementSize(sz);        } break;        case QVariant::SizeF: {            DomSizeF *szf = new DomSizeF();            QSizeF sizef = v.toSizeF();            szf->setElementWidth(sizef.width());            szf->setElementHeight(sizef.height());            dom_prop->setElementSizeF(szf);        } break;        case QVariant::Rect: {            DomRect *rc = new DomRect();            QRect rect = v.toRect();            rc->setElementX(rect.x());            rc->setElementY(rect.y());            rc->setElementWidth(rect.width());            rc->setElementHeight(rect.height());            dom_prop->setElementRect(rc);        } break;        case QVariant::RectF: {            DomRectF *rcf = new DomRectF();            QRectF rectf = v.toRectF();            rcf->setElementX(rectf.x());            rcf->setElementY(rectf.y());            rcf->setElementWidth(rectf.width());            rcf->setElementHeight(rectf.height());            dom_prop->setElementRectF(rcf);        } break;        case QVariant::Font: {            DomFont *fnt = new DomFont();            QFont font = qvariant_cast<QFont>(v);            uint mask = font.resolve();            if (mask & QFontPrivate::Weight) {                fnt->setElementBold(font.bold());                fnt->setElementWeight(font.weight());            }            if (mask & QFontPrivate::Family)                fnt->setElementFamily(font.family());            if (mask & QFontPrivate::Style)                fnt->setElementItalic(font.italic());            if (mask & QFontPrivate::Size)                fnt->setElementPointSize(font.pointSize());            if (mask & QFontPrivate::StrikeOut)                fnt->setElementStrikeOut(font.strikeOut());            if (mask & QFontPrivate::Underline)                fnt->setElementUnderline(font.underline());            if (mask & QFontPrivate::Kerning)                fnt->setElementKerning(font.kerning());            if (mask & QFontPrivate::StyleStrategy)                fnt->setElementAntialiasing(font.styleStrategy() == QFont::PreferDefault);            dom_prop->setElementFont(fnt);        } break;        case QVariant::Cursor: {            dom_prop->setElementCursor(qvariant_cast<QCursor>(v).shape());        } break;        case QVariant::KeySequence: {            DomString *s = new DomString();            s->setText(qvariant_cast<QKeySequence>(v).toString(QKeySequence::PortableText));            dom_prop->setElementString(s);        } break;        case QVariant::Palette: {            DomPalette *dom = new DomPalette();            QPalette palette = qvariant_cast<QPalette>(v);            palette.setCurrentColorGroup(QPalette::Active);            dom->setElementActive(saveColorGroup(palette));            palette.setCurrentColorGroup(QPalette::Inactive);            dom->setElementInactive(saveColorGroup(palette));            palette.setCurrentColorGroup(QPalette::Disabled);            dom->setElementDisabled(saveColorGroup(palette));            dom_prop->setElementPalette(dom);        } break;        case QVariant::SizePolicy: {            DomSizePolicy *dom = new DomSizePolicy();            QSizePolicy sizePolicy = qvariant_cast<QSizePolicy>(v);            dom->setElementHorStretch(sizePolicy.horizontalStretch());            dom->setElementVerStretch(sizePolicy.verticalStretch());            dom->setElementHSizeType(sizePolicy.horizontalPolicy());            dom->setElementVSizeType(sizePolicy.verticalPolicy());            dom_prop->setElementSizePolicy(dom);        } break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -