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

📄 abstractformbuilder.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    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::Double: {            dom_prop->setElementDouble(v.toDouble());        } break;        case QVariant::Bool: {            dom_prop->setElementBool(v.toBool() ? QLatin1String("true") : QLatin1String("false"));        } 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::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::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::Font: {            DomFont *fnt = new DomFont();            QFont font = qvariant_cast<QFont>(v);            fnt->setElementBold(font.bold());            fnt->setElementFamily(font.family());            fnt->setElementItalic(font.italic());            fnt->setElementPointSize(font.pointSize());            fnt->setElementStrikeOut(font.strikeOut());            fnt->setElementUnderline(font.underline());            fnt->setElementWeight(font.weight());            dom_prop->setElementFont(fnt);        } break;        case QVariant::Cursor: {            dom_prop->setElementCursor(qvariant_cast<QCursor>(v).shape());        } break;        case QVariant::KeySequence: {            DomString *s = new DomString();#ifndef Q_WS_MAC            s->setText(qvariant_cast<QKeySequence>(v).toString(QKeySequence::PortableText));#else            s->setText(platformNeutralKeySequence(qvariant_cast<QKeySequence>(v)));#endif            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;        case QVariant::Date: {            DomDate *dom = new DomDate();            QDate date = qvariant_cast<QDate>(v);            dom->setElementYear(date.year());            dom->setElementMonth(date.month());            dom->setElementDay(date.day());            dom_prop->setElementDate(dom);        } break;        case QVariant::Time: {            DomTime *dom = new DomTime();            QTime time = qvariant_cast<QTime>(v);            dom->setElementHour(time.hour());            dom->setElementMinute(time.minute());            dom->setElementSecond(time.second());            dom_prop->setElementTime(dom);        } break;        case QVariant::DateTime: {            DomDateTime *dom = new DomDateTime();            QDateTime dateTime = qvariant_cast<QDateTime>(v);            dom->setElementHour(dateTime.time().hour());            dom->setElementMinute(dateTime.time().minute());            dom->setElementSecond(dateTime.time().second());            dom->setElementYear(dateTime.date().year());            dom->setElementMonth(dateTime.date().month());            dom->setElementDay(dateTime.date().day());                        dom_prop->setElementDateTime(dom);        } break;        case QVariant::Pixmap:        case QVariant::Icon: {            DomResourcePixmap *r = new DomResourcePixmap;            QString icon_path;            QString qrc_path;            if (v.type() == QVariant::Icon) {                QIcon icon = qvariant_cast<QIcon>(v);                icon_path = iconToFilePath(icon);                qrc_path = iconToQrcPath(icon);            } else {                QPixmap pixmap = qvariant_cast<QPixmap>(v);                icon_path = pixmapToFilePath(pixmap);                qrc_path = pixmapToQrcPath(pixmap);            }            if (qrc_path.isEmpty())                icon_path = workingDirectory().relativeFilePath(icon_path);            else                qrc_path = workingDirectory().relativeFilePath(qrc_path);			icon_path = icon_path.replace(QLatin1Char('\\'), QLatin1Char('/'));			qrc_path = qrc_path.replace(QLatin1Char('\\'), QLatin1Char('/'));            r->setText(icon_path);            if (!qrc_path.isEmpty())                r->setAttributeResource(qrc_path);            if (v.type() == QVariant::Icon)                dom_prop->setElementIconSet(r);            else                dom_prop->setElementPixmap(r);        } break;        default: {            qWarning("support for property `%s' of type `%d' not implemented yet!!",                pname.toUtf8().data(), v.type());        } break;    }    dom_prop->setAttributeName(pname);    // ### dom_prop->setAttributeStdset(true);    if (dom_prop->kind() == DomProperty::Unknown) {        delete dom_prop;        dom_prop = 0;    }    return dom_prop;}/*!    \internal*/QList<DomProperty*> QAbstractFormBuilder::computeProperties(QObject *obj){    QList<DomProperty*> lst;    const QMetaObject *meta = obj->metaObject();    QHash<QByteArray, bool> properties;    for(int i=0; i<meta->propertyCount(); ++i)        properties.insert(meta->property(i).name(), true);    QList<QByteArray> propertyNames = properties.keys();    for(int i=0; i<propertyNames.size(); ++i) {        QString pname = QString::fromUtf8(propertyNames.at(i));        QMetaProperty prop = meta->property(meta->indexOfProperty(pname.toUtf8()));        if (!prop.isWritable() || !checkProperty(obj, QLatin1String(prop.name())))            continue;        QVariant v = prop.read(obj);        DomProperty *dom_prop = 0;        if (v.type() == QVariant::Int) {            dom_prop = new DomProperty();            if (prop.isFlagType())                qWarning("flags property not supported yet!!");            if (prop.isEnumType()) {                QString scope = QString::fromUtf8(prop.enumerator().scope());                if (scope.size())                    scope += QString::fromUtf8("::");                QString e = QString::fromUtf8(prop.enumerator().valueToKey(v.toInt()));                if (e.size())                    dom_prop->setElementEnum(scope + e);            } else                dom_prop->setElementNumber(v.toInt());            dom_prop->setAttributeName(pname);        } else {            dom_prop = createProperty(obj, pname, v);        }        if (!dom_prop || dom_prop->kind() == DomProperty::Unknown)            delete dom_prop;        else            lst.append(dom_prop);    }    return lst;}/*!    \internal*/bool QAbstractFormBuilder::toBool(const QString &str){    return str.toLower() == QLatin1String("true");}/*!    \internal*/QHash<QString, DomProperty*> QAbstractFormBuilder::propertyMap(const QList<DomProperty*> &properties){    QHash<QString, DomProperty*> map;    foreach (DomProperty *p, properties)        map.insert(p->attributeName(), p);    return map;}/*!    \internal*/bool QAbstractFormBuilder::checkProperty(QObject *obj, const QString &prop) const{    Q_UNUSED(obj);    Q_UNUSED(prop);    return true;}/*!    \internal*/QString QAbstractFormBuilder::toString(const DomString *str){    return str ? str->text() : QString();}/*!    \internal*/void QAbstractFormBuilder::applyTabStops(QWidget *widget, DomTabStops *tabStops){    if (!tabStops)        return;    QWidget *lastWidget = 0;    QStringList l = tabStops->elementTabStop();    for (int i=0; i<l.size(); ++i) {        QString name = l.at(i);        QWidget *child = qFindChild<QWidget*>(widget, name);        if (!child) {            qWarning("'%s' isn't a valid widget\n", name.toUtf8().data());            continue;        }        if (i == 0) {            lastWidget = qFindChild<QWidget*>(widget, name);            continue;        } else if (!child || !lastWidget) {            continue;        }        QWidget::setTabOrder(lastWidget, child);        lastWidget = qFindChild<QWidget*>(widget, name);    }}/*!    \internal*/DomCustomWidgets *QAbstractFormBuilder::saveCustomWidgets(){    return 0;}/*!    \internal*/DomTabStops *QAbstractFormBuilder::saveTabStops(){

⌨️ 快捷键说明

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