properties.cpp
来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 643 行 · 第 1/2 页
CPP
643 行
return true; case QVariant::ByteArray: dom_prop->setElementCstring(QString::fromUtf8(v.toByteArray())); return true; case QVariant::Int: dom_prop->setElementNumber(v.toInt()); return true; case QVariant::UInt: dom_prop->setElementUInt(v.toUInt()); return true; case QVariant::LongLong: dom_prop->setElementLongLong(v.toLongLong()); return true; case QVariant::ULongLong: dom_prop->setElementULongLong(v.toULongLong()); return true; case QVariant::Double: dom_prop->setElementDouble(v.toDouble()); return true; case QVariant::Bool: dom_prop->setElementBool(v.toBool() ? QLatin1String("true") : QLatin1String("false")); return true; case QVariant::Char: { DomChar *ch = new DomChar(); const QChar character = v.toChar(); ch->setElementUnicode(character.unicode()); dom_prop->setElementChar(ch); } return true; case QVariant::Point: { DomPoint *pt = new DomPoint(); const QPoint point = v.toPoint(); pt->setElementX(point.x()); pt->setElementY(point.y()); dom_prop->setElementPoint(pt); } return true; case QVariant::PointF: { DomPointF *ptf = new DomPointF(); const QPointF pointf = v.toPointF(); ptf->setElementX(pointf.x()); ptf->setElementY(pointf.y()); dom_prop->setElementPointF(ptf); } return true; case QVariant::Color: { DomColor *clr = new DomColor(); const QColor color = qvariant_cast<QColor>(v); clr->setElementRed(color.red()); clr->setElementGreen(color.green()); clr->setElementBlue(color.blue()); dom_prop->setElementColor(clr); } return true; case QVariant::Size: { DomSize *sz = new DomSize(); const QSize size = v.toSize(); sz->setElementWidth(size.width()); sz->setElementHeight(size.height()); dom_prop->setElementSize(sz); } return true; case QVariant::SizeF: { DomSizeF *szf = new DomSizeF(); const QSizeF sizef = v.toSizeF(); szf->setElementWidth(sizef.width()); szf->setElementHeight(sizef.height()); dom_prop->setElementSizeF(szf); } return true; case QVariant::Rect: { DomRect *rc = new DomRect(); const QRect rect = v.toRect(); rc->setElementX(rect.x()); rc->setElementY(rect.y()); rc->setElementWidth(rect.width()); rc->setElementHeight(rect.height()); dom_prop->setElementRect(rc); } return true; case QVariant::RectF: { DomRectF *rcf = new DomRectF(); const QRectF rectf = v.toRectF(); rcf->setElementX(rectf.x()); rcf->setElementY(rectf.y()); rcf->setElementWidth(rectf.width()); rcf->setElementHeight(rectf.height()); dom_prop->setElementRectF(rcf); } return true; case QVariant::Font: { DomFont *fnt = new DomFont(); const QFont font = qvariant_cast<QFont>(v); const 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) { const QMetaEnum styleStrategy_enum = metaEnum<QAbstractFormBuilderGadget>("styleStrategy"); fnt->setElementStyleStrategy(QLatin1String(styleStrategy_enum.valueToKey(font.styleStrategy()))); } dom_prop->setElementFont(fnt); } return true; case QVariant::Cursor: { const QMetaEnum cursorShape_enum = metaEnum<QAbstractFormBuilderGadget>("cursorShape"); dom_prop->setElementCursorShape(QLatin1String(cursorShape_enum.valueToKey(qvariant_cast<QCursor>(v).shape()))); } return true; case QVariant::KeySequence: { DomString *s = new DomString(); s->setText(qvariant_cast<QKeySequence>(v).toString(QKeySequence::PortableText)); dom_prop->setElementString(s); } return true; case QVariant::Locale: { DomLocale *dom = new DomLocale(); const QLocale locale = qvariant_cast<QLocale>(v); const QMetaEnum language_enum = metaEnum<QAbstractFormBuilderGadget>("language"); const QMetaEnum country_enum = metaEnum<QAbstractFormBuilderGadget>("country"); dom->setAttributeLanguage(QLatin1String(language_enum.valueToKey(locale.language()))); dom->setAttributeCountry(QLatin1String(country_enum.valueToKey(locale.country()))); dom_prop->setElementLocale(dom); } return true; case QVariant::SizePolicy: { DomSizePolicy *dom = new DomSizePolicy(); const QSizePolicy sizePolicy = qvariant_cast<QSizePolicy>(v); dom->setElementHorStretch(sizePolicy.horizontalStretch()); dom->setElementVerStretch(sizePolicy.verticalStretch()); const QMetaEnum sizeType_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType"); dom->setAttributeHSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.horizontalPolicy()))); dom->setAttributeVSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.verticalPolicy()))); dom_prop->setElementSizePolicy(dom); } return true; case QVariant::Date: { DomDate *dom = new DomDate(); const QDate date = qvariant_cast<QDate>(v); dom->setElementYear(date.year()); dom->setElementMonth(date.month()); dom->setElementDay(date.day()); dom_prop->setElementDate(dom); } return true; case QVariant::Time: { DomTime *dom = new DomTime(); const QTime time = qvariant_cast<QTime>(v); dom->setElementHour(time.hour()); dom->setElementMinute(time.minute()); dom->setElementSecond(time.second()); dom_prop->setElementTime(dom); } return true; case QVariant::DateTime: { DomDateTime *dom = new DomDateTime(); const 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); } return true; case QVariant::Url: { DomUrl *dom = new DomUrl(); const QUrl url = v.toUrl(); DomString *str = new DomString(); str->setText(url.toString()); dom->setElementString(str); dom_prop->setElementUrl(dom); } return true; case QVariant::StringList: { DomStringList *sl = new DomStringList; sl->setElementString(qvariant_cast<QStringList>(v)); dom_prop->setElementStringList(sl); } return true; default: break; } return false;}static QString msgCannotWriteProperty(const QString &pname, const QVariant &v){ return QObject::tr("The property %1 could not be written. The type %2 is not supported yet."). arg(pname).arg(QVariant::typeToName (v.type()));}// Convert simple variant types to DOM propertiesDomProperty *variantToDomProperty(const QString &pname, const QVariant &v, bool translateString){ DomProperty *dom_prop = new DomProperty(); dom_prop->setAttributeName(pname); if (applySimpleProperty(v, translateString, dom_prop)) return dom_prop; delete dom_prop; uiLibWarning(msgCannotWriteProperty(pname, v)); return 0;}// Convert complex variant types to DOM properties with the help of QAbstractFormBuilder// Does not perform a check using QAbstractFormBuilder::checkProperty().DomProperty *variantToDomProperty(QAbstractFormBuilder *afb, QObject *obj, const QString &pname, const QVariant &v){ DomProperty *dom_prop = new DomProperty(); dom_prop->setAttributeName(pname); const QMetaObject *meta = obj->metaObject(); const int pindex = meta->indexOfProperty(pname.toLatin1()); if (pindex != -1) { QMetaProperty meta_property = meta->property(pindex); if (!meta_property.hasStdCppSet() || (qobject_cast<QAbstractScrollArea *>(obj) && pname == QLatin1String("cursor"))) dom_prop->setAttributeStdset(0); } // Try simple properties const bool translateString = pname != QLatin1String("objectName"); if (applySimpleProperty(v, translateString, dom_prop)) return dom_prop; // Complex properties switch (v.type()) { case QVariant::Palette: { DomPalette *dom = new DomPalette(); QPalette palette = qvariant_cast<QPalette>(v); palette.setCurrentColorGroup(QPalette::Active); dom->setElementActive(afb->saveColorGroup(palette)); palette.setCurrentColorGroup(QPalette::Inactive); dom->setElementInactive(afb->saveColorGroup(palette)); palette.setCurrentColorGroup(QPalette::Disabled); dom->setElementDisabled(afb->saveColorGroup(palette)); dom_prop->setElementPalette(dom); } break; case QVariant::Pixmap: afb->setPixmapProperty(*dom_prop, afb->pixmapPaths(qvariant_cast<QPixmap>(v))); dom_prop->setAttributeName(pname); break; case QVariant::Icon: afb->setIconProperty(*dom_prop, afb->iconPaths(qvariant_cast<QIcon>(v))); dom_prop->setAttributeName(pname); break; default: delete dom_prop; uiLibWarning(msgCannotWriteProperty(pname, v)); return 0; } return dom_prop;}#ifdef QFORMINTERNAL_NAMESPACE}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?