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

📄 qdesigner_resource.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    }    ui_widget->setAttributeClass(className); // fix the class name    if (QDesignerExtraInfoExtension *extra = qt_extension<QDesignerExtraInfoExtension*>(core()->extensionManager(), w)) {        extra->loadWidgetExtraInfo(ui_widget);    }    return w;}QLayout *QDesignerResource::create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget){    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(parentWidget))        parentWidget = promoted->child();    QLayout *l = QAbstractFormBuilder::create(ui_layout, layout, parentWidget);    if (QGridLayout *gridLayout = qobject_cast<QGridLayout*>(l))        QLayoutSupport::createEmptyCells(gridLayout);    return l;}QLayoutItem *QDesignerResource::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget){    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(parentWidget))        parentWidget = promoted->child();    if (ui_layoutItem->kind() == DomLayoutItem::Spacer) {        QHash<QString, DomProperty*> properties = propertyMap(ui_layoutItem->elementSpacer()->elementProperty());        Spacer *spacer = (Spacer*) m_core->widgetFactory()->createWidget(QLatin1String("Spacer"), parentWidget);        core()->metaDataBase()->add(spacer);        spacer->setInteraciveMode(false);        applyProperties(spacer, ui_layoutItem->elementSpacer()->elementProperty());        spacer->setInteraciveMode(true);        if (m_formWindow) {            m_formWindow->manageWidget(spacer);            if (QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(m_core->extensionManager(), spacer))                sheet->setChanged(sheet->indexOf(QLatin1String("orientation")), true);        }        return new QWidgetItem(spacer);    } else if (ui_layoutItem->kind() == DomLayoutItem::Layout && parentWidget) {        DomLayout *ui_layout = ui_layoutItem->elementLayout();        QLayoutWidget *layoutWidget = new QLayoutWidget(m_formWindow, parentWidget);        core()->metaDataBase()->add(layoutWidget);        applyProperties(layoutWidget, ui_layout->elementProperty());        if (m_formWindow) {            m_formWindow->manageWidget(layoutWidget);        }        (void) create(ui_layout, 0, layoutWidget);        return new QWidgetItem(layoutWidget);    }    return QAbstractFormBuilder::create(ui_layoutItem, layout, parentWidget);}void QDesignerResource::changeObjectName(QObject *o, QString objName){    m_formWindow->unify(o, objName, true);    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(o)) {        if (objName.startsWith(QLatin1String("__qt__promoted_"))) {            promoted->setObjectName(objName);            promoted->child()->setObjectName(objName.mid(15));        } else {            promoted->child()->setObjectName(objName);            promoted->setObjectName(QLatin1String("__qt__promoted_") + objName);        }    } else {        o->setObjectName(objName);    }}void QDesignerResource::applyProperties(QObject *o, const QList<DomProperty*> &properties){    if (QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(m_core->extensionManager(), o)) {        for (int i=0; i<properties.size(); ++i) {            DomProperty *p = properties.at(i);            QString propertyName = p->attributeName();            int index = sheet->indexOf(propertyName);            if (index != -1) {                const QMetaObject *meta = 0;                if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(o))                    meta = promoted->child()->metaObject();                else                    meta = o->metaObject();                QVariant v = toVariant(meta, p);                if (!core()->metaDataBase()->item(o)) {                    qWarning() << "** WARNING no ``meta database item'' for object:" << o;                }                if (p->kind() == DomProperty::String                        && qobject_cast<MetaDataBase*>(core()->metaDataBase())                        && core()->metaDataBase()->item(o))                {                    DomString *str = p->elementString();                    MetaDataBaseItem *item = static_cast<MetaDataBaseItem*>(core()->metaDataBase()->item(o));                    if (str->hasAttributeComment()) {                        item->setPropertyComment(propertyName, str->attributeComment());                    }                }                // ### move me                if (QLayout *layout = qobject_cast<QLayout*>(o)) {                    if (propertyName == QLatin1String("margin") && qobject_cast<QLayoutWidget*>(layout->parentWidget()))                        v = v.toInt() + 1;                }                sheet->setProperty(index, v);                sheet->setChanged(index, true);            }            if (propertyName == QLatin1String("objectName"))                changeObjectName(o, o->objectName());        }        QSplitter *splitter = qobject_cast<QSplitter *>(o);        if (splitter) {            QDesignerWidgetFactoryInterface *widgetFactory = m_core->widgetFactory();            widgetFactory->createLayout(splitter, 0, splitter->orientation() == Qt::Horizontal ?                        LayoutInfo::HBox : LayoutInfo::VBox);        }    }}QWidget *QDesignerResource::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &_name){    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(parentWidget))        parentWidget = promoted->child();    QString name = _name;    QString className = widgetName;    if (m_isMainWidget)        m_isMainWidget = false;    QWidget *w = m_core->widgetFactory()->createWidget(className, parentWidget);    if (!w)        return 0;    if (name.isEmpty()) {        QDesignerWidgetDataBaseInterface *db = m_core->widgetDataBase();        if (QDesignerWidgetDataBaseItemInterface *item = db->item(db->indexOfObject(w)))            name = qtify(item->name());    }    changeObjectName(w, name);    QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(m_core->extensionManager(), parentWidget);    if (!qobject_cast<QMenu*>(w) && (!parentWidget || !container)) {        m_formWindow->manageWidget(w);    } else {        m_core->metaDataBase()->add(w);    }    w->setWindowFlags(w->windowFlags() & ~Qt::Window);    return w;}QLayout *QDesignerResource::createLayout(const QString &layoutName, QObject *parent, const QString &name){    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(parent))        parent = promoted->child();    QWidget *layoutBase = 0;    QLayout *layout = qobject_cast<QLayout*>(parent);    if (parent->isWidgetType())        layoutBase = static_cast<QWidget*>(parent);    else {        Q_ASSERT( layout != 0 );        layoutBase = layout->parentWidget();    }    LayoutInfo::Type layoutType = LayoutInfo::Grid;    if (layoutName == QLatin1String("QVBoxLayout"))        layoutType = LayoutInfo::VBox;    else if (layoutName == QLatin1String("QHBoxLayout"))        layoutType = LayoutInfo::HBox;    else if (layoutName == QLatin1String("QStackedLayout"))        layoutType = LayoutInfo::Stacked;    QLayout *lay = m_core->widgetFactory()->createLayout(layoutBase, layout, layoutType);    if (lay != 0)        changeObjectName(lay, name);    return lay;}// saveDomWidget *QDesignerResource::createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive){    QDesignerMetaDataBaseItemInterface *item = m_core->metaDataBase()->item(widget);    if (!item)        return 0;    if (qobject_cast<Spacer*>(widget) && m_copyWidget == false) {        ++m_topLevelSpacerCount;        return 0;    }    QDesignerWidgetDataBaseItemInterface *widgetInfo =  0;    int widgetInfoIndex = m_core->widgetDataBase()->indexOfObject(widget, false);    if (widgetInfoIndex != -1) {        widgetInfo = m_core->widgetDataBase()->item(widgetInfoIndex);        if (widgetInfo->isCustom()) {            if (widgetInfo->extends().isEmpty()) {                const QMetaObject *mo = widget->metaObject()->superClass();                while (mo != 0) {                    if (m_core->widgetDataBase()->indexOfClassName(QLatin1String(mo->className())) != -1) {                        widgetInfo->setExtends(QLatin1String(mo->className()));                        break;                    }                    mo = mo->superClass();                }            }            m_usedCustomWidgets.insert(widgetInfo, true);        }    }    DomWidget *w = 0;    if (QDesignerTabWidget *tabWidget = qobject_cast<QDesignerTabWidget*>(widget))        w = saveWidget(tabWidget, ui_parentWidget);    else if (QDesignerStackedWidget *stackedWidget = qobject_cast<QDesignerStackedWidget*>(widget))        w = saveWidget(stackedWidget, ui_parentWidget);    else if (QDesignerToolBox *toolBox = qobject_cast<QDesignerToolBox*>(widget))        w = saveWidget(toolBox, ui_parentWidget);    else if (QDesignerToolBar *toolBar = qobject_cast<QDesignerToolBar*>(widget))        w = saveWidget(toolBar, ui_parentWidget);    else if (QDesignerDockWidget *dockWidget = qobject_cast<QDesignerDockWidget*>(widget))        w = saveWidget(dockWidget, ui_parentWidget);    else if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(m_core->extensionManager(), widget))        w = saveWidget(widget, container, ui_parentWidget);    else if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(widget))        w = createDom(promoted->child(), ui_parentWidget, recursive);    else        w = QAbstractFormBuilder::createDom(widget, ui_parentWidget, recursive);    Q_ASSERT( w != 0 );    QString className = w->attributeClass();    if (m_internal_to_qt.contains(className))        w->setAttributeClass(m_internal_to_qt.value(className));    w->setAttributeName(widget->objectName());    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(widget)) {        Q_ASSERT(widgetInfo != 0);        w->setAttributeName(promoted->child()->objectName());        w->setAttributeClass(widgetInfo->name());        QList<DomProperty*> prop_list = w->elementProperty();        foreach (DomProperty *prop, prop_list) {            if (prop->attributeName() == QLatin1String("geometry")) {                if (DomRect *rect = prop->elementRect()) {                    rect->setElementX(widget->x());                    rect->setElementY(widget->y());                }                break;            }        }    }    if (QDesignerExtraInfoExtension *extra = qt_extension<QDesignerExtraInfoExtension*>(core()->extensionManager(), widget)) {        extra->saveWidgetExtraInfo(w);    }    return w;}DomLayout *QDesignerResource::createDom(QLayout *layout, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget){    QDesignerMetaDataBaseItemInterface *item = m_core->metaDataBase()->item(layout);    if (item == 0) {        layout = qFindChild<QLayout*>(layout);        // refresh the meta database item        item = m_core->metaDataBase()->item(layout);    }    if (item == 0) {        // nothing to do.        return 0;    }    if (qobject_cast<QSplitter*>(layout->parentWidget()) != 0) {        // nothing to do.        return 0;    }    m_chain.push(layout);    DomLayout *l = QAbstractFormBuilder::createDom(layout, ui_parentLayout, ui_parentWidget);    Q_ASSERT(l != 0);    m_chain.pop();    return l;}DomLayoutItem *QDesignerResource::createDom(QLayoutItem *item, DomLayout *ui_layout, DomWidget *ui_parentWidget){    DomLayoutItem *ui_item = 0;    if (Spacer *s = qobject_cast<Spacer*>(item->widget())) {        if (!m_core->metaDataBase()->item(s))            return 0;        DomSpacer *spacer = new DomSpacer();        QList<DomProperty*> properties = computeProperties(item->widget());        // ### filter the properties        spacer->setElementProperty(properties);        ui_item = new DomLayoutItem();        ui_item->setElementSpacer(spacer);        m_laidout.insert(item->widget(), true);    } else if (QLayoutWidget *layoutWidget = qobject_cast<QLayoutWidget*>(item->widget())) {        Q_ASSERT(layoutWidget->layout());        DomLayout *l = createDom(layoutWidget->layout(), ui_layout, ui_parentWidget);        ui_item = new DomLayoutItem();        ui_item->setElementLayout(l);        m_laidout.insert(item->widget(), true);    } else if (!item->spacerItem()) { // we use spacer as fake item in the Designer        ui_item = QAbstractFormBuilder::createDom(item, ui_layout, ui_parentWidget);    } else {        return 0;    }    if (m_chain.size() && item->widget()) {        if (QGridLayout *grid = qobject_cast<QGridLayout*>(m_chain.top())) {            int index = Utils::indexOfWidget(grid, item->widget());            int row, column, rowspan, colspan;            grid->getItemPosition(index, &row, &column, &rowspan, &colspan);            ui_item->setAttributeRow(row);            ui_item->setAttributeColumn(column);            if (colspan != 1)                ui_item->setAttributeColSpan(colspan);            if (rowspan != 1)                ui_item->setAttributeRowSpan(rowspan);        }    }    return ui_item;}void QDesignerResource::createCustomWidgets(DomCustomWidgets *dom_custom_widgets){    if (dom_custom_widgets == 0)        return;    QList<DomCustomWidget*> custom_widget_list = dom_custom_widgets->elementCustomWidget();    QDesignerWidgetDataBaseInterface *db = m_formWindow->core()->widgetDataBase();    foreach(DomCustomWidget *custom_widget, custom_widget_list) {        WidgetDataBaseItem *item            = new WidgetDataBaseItem(custom_widget->elementClass());        QString base_class = custom_widget->elementExtends();        item->setExtends(base_class);

⌨️ 快捷键说明

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