📄 cppwriteinitialization.cpp
字号:
if (p->kind() == DomProperty::String && (!p->elementString()->hasAttributeNotr() || !toBool(p->elementString()->attributeNotr()))) o = &m_refreshOut;#ifdef QT_NO_TOOLTIP if (propertyName == QLatin1String("toolTip")) continue;#endif // QT_NO_TOOLTIP#ifdef QT_NO_WHATSTHIS if (propertyName == QLatin1String("whatsThis")) continue;#endif // QT_NO_WHATSTHIS#ifdef QT_NO_STATUSTIP if (propertyName == QLatin1String("statusTip")) continue;#endif // QT_NO_WHATSTHIS (*o) << m_option.indent << varNewName << setFunction << propertyValue; if (!stdset) (*o) << ')'; (*o) << ");\n"; } } if (leftMargin != -1 || topMargin != -1 || rightMargin != -1 || bottomMargin != -1) { QString objectName = varName; if (m_widgetChain.top()) { const QString parentWidget = m_widgetChain.top()->attributeClass(); if (!m_layoutChain.top() && (m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3GroupBox")) || m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3ButtonGroup")))) { objectName = m_driver->findOrInsertWidget(m_widgetChain.top()) + QLatin1String("->layout()"); } } m_output << m_option.indent << objectName << QLatin1String("->setContentsMargins(") << QString::number(leftMargin) << QLatin1String(", ") << QString::number(topMargin) << QLatin1String(", ") << QString::number(rightMargin) << QLatin1String(", ") << QString::number(bottomMargin) << QLatin1String(");\n"); }}QString WriteInitialization::writeSizePolicy(const DomSizePolicy *sp){ // check cache const SizePolicyHandle sizePolicyHandle(sp); const SizePolicyNameMap::const_iterator it = m_SizePolicyNameMap.constFind(sizePolicyHandle); if ( it != m_SizePolicyNameMap.constEnd()) { return it.value(); } // insert with new name const QString spName = m_driver->unique(QLatin1String("sizePolicy")); m_SizePolicyNameMap.insert(sizePolicyHandle, spName); m_output << m_option.indent << "QSizePolicy " << spName; do { if (sp->hasElementHSizeType() && sp->hasElementVSizeType()) { m_output << "(static_cast<QSizePolicy::Policy>(" << sp->elementHSizeType() << "), static_cast<QSizePolicy::Policy>(" << sp->elementVSizeType() << "));\n"; break; } if (sp->hasAttributeHSizeType() && sp->hasAttributeVSizeType()) { m_output << "(QSizePolicy::" << sp->attributeHSizeType() << ", QSizePolicy::" << sp->attributeVSizeType() << ");\n"; break; } m_output << ";\n"; } while (false); m_output << m_option.indent << spName << ".setHorizontalStretch(" << sp->elementHorStretch() << ");\n"; m_output << m_option.indent << spName << ".setVerticalStretch(" << sp->elementVerStretch() << ");\n"; return spName;}// Check for a font with the given properties in the FontPropertiesNameMap// or create a new one. Returns the name.QString WriteInitialization::writeFontProperties(const DomFont *f){ // check cache const FontHandle fontHandle(f); const FontPropertiesNameMap::const_iterator it = m_FontPropertiesNameMap.constFind(fontHandle); if ( it != m_FontPropertiesNameMap.constEnd()) { return it.value(); } // insert with new name const QString fontName = m_driver->unique(QLatin1String("font")); m_FontPropertiesNameMap.insert(FontHandle(f), fontName); m_output << m_option.indent << "QFont " << fontName << ";\n"; if (f->hasElementFamily() && !f->elementFamily().isEmpty()) { m_output << m_option.indent << fontName << ".setFamily(QString::fromUtf8(" << fixString(f->elementFamily(), m_option.indent) << "));\n"; } if (f->hasElementPointSize() && f->elementPointSize() > 0) { m_output << m_option.indent << fontName << ".setPointSize(" << f->elementPointSize() << ");\n"; } if (f->hasElementBold()) { m_output << m_option.indent << fontName << ".setBold(" << (f->elementBold() ? "true" : "false") << ");\n"; } if (f->hasElementItalic()) { m_output << m_option.indent << fontName << ".setItalic(" << (f->elementItalic() ? "true" : "false") << ");\n"; } if (f->hasElementUnderline()) { m_output << m_option.indent << fontName << ".setUnderline(" << (f->elementUnderline() ? "true" : "false") << ");\n"; } if (f->hasElementWeight() && f->elementWeight() > 0) { m_output << m_option.indent << fontName << ".setWeight(" << f->elementWeight() << ");" << endl; } if (f->hasElementStrikeOut()) { m_output << m_option.indent << fontName << ".setStrikeOut(" << (f->elementStrikeOut() ? "true" : "false") << ");\n"; } if (f->hasElementKerning()) { m_output << m_option.indent << fontName << ".setKerning(" << (f->elementKerning() ? "true" : "false") << ");\n"; } if (f->hasElementAntialiasing()) { m_output << m_option.indent << fontName << ".setStyleStrategy(" << (f->elementAntialiasing() ? "QFont::PreferDefault" : "QFont::NoAntialias") << ");\n"; } if (f->hasElementStyleStrategy()) { m_output << m_option.indent << fontName << ".setStyleStrategy(QFont::" << f->elementStyleStrategy() << ");\n"; } return fontName;}QString WriteInitialization::domColor2QString(const DomColor *c){ if (c->hasAttributeAlpha()) return QString::fromLatin1("QColor(%1, %2, %3, %4)") .arg(c->elementRed()) .arg(c->elementGreen()) .arg(c->elementBlue()) .arg(c->attributeAlpha()); return QString::fromLatin1("QColor(%1, %2, %3)") .arg(c->elementRed()) .arg(c->elementGreen()) .arg(c->elementBlue());}void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QString &group, const QString &paletteName){ if (!colorGroup) return; // old format const QList<DomColor*> colors = colorGroup->elementColor(); for (int i=0; i<colors.size(); ++i) { const DomColor *color = colors.at(i); m_output << m_option.indent << paletteName << ".setColor(" << group << ", " << "static_cast<QPalette::ColorRole>(" << QString::number(i) << ')' << ", " << domColor2QString(color) << ");\n"; } // new format const QList<DomColorRole *> colorRoles = colorGroup->elementColorRole(); QListIterator<DomColorRole *> itRole(colorRoles); while (itRole.hasNext()) { const DomColorRole *colorRole = itRole.next(); if (colorRole->hasAttributeRole()) { DomBrush *brush = colorRole->elementBrush(); QString brushName; if (!brush->hasAttributeBrushStyle() || brush->attributeBrushStyle() == QLatin1String("SolidPattern")) { const DomColor *color = brush->elementColor(); if (color) { uint c = ((color->elementRed() & 0xFF) << 24) | ((color->elementGreen() & 0xFF) << 16) | ((color->elementBlue() & 0xFF) << 8) | ((color->attributeAlpha() & 0xFF)); if (m_colorBrushHash.contains(c)) { brushName = m_colorBrushHash.value(c); } else { brushName = m_driver->unique(QLatin1String("brush")); writeBrush(colorRole->elementBrush(), brushName); m_colorBrushHash[c] = brushName; } } } if (brushName.isEmpty()) { brushName = m_driver->unique(QLatin1String("brush")); writeBrush(colorRole->elementBrush(), brushName); } m_output << m_option.indent << paletteName << ".setBrush(" << group << ", " << "QPalette::" << colorRole->attributeRole() << ", " << brushName << ");\n"; } }}void WriteInitialization::writeBrush(DomBrush *brush, const QString &brushName){ QString style = QLatin1String("SolidPattern"); if (brush->hasAttributeBrushStyle()) style = brush->attributeBrushStyle(); if (style == QLatin1String("LinearGradientPattern") || style == QLatin1String("RadialGradientPattern") || style == QLatin1String("ConicalGradientPattern")) { const DomGradient *gradient = brush->elementGradient(); const QString gradientType = gradient->attributeType(); const QString gradientName = m_driver->unique(QLatin1String("gradient")); if (gradientType == QLatin1String("LinearGradient")) { m_output << m_option.indent << "QLinearGradient " << gradientName << '(' << gradient->attributeStartX() << ", " << gradient->attributeStartY() << ", " << gradient->attributeEndX() << ", " << gradient->attributeEndY() << ");\n"; } else if (gradientType == QLatin1String("RadialGradient")) { m_output << m_option.indent << "QRadialGradient " << gradientName << '(' << gradient->attributeCentralX() << ", " << gradient->attributeCentralY() << ", " << gradient->attributeRadius() << ", " << gradient->attributeFocalX() << ", " << gradient->attributeFocalY() << ");\n"; } else if (gradientType == QLatin1String("ConicalGradient")) { m_output << m_option.indent << "QConicalGradient " << gradientName << '(' << gradient->attributeCentralX() << ", " << gradient->attributeCentralY() << ", " << gradient->attributeAngle() << ");\n"; } m_output << m_option.indent << gradientName << ".setSpread(QGradient::" << gradient->attributeSpread() << ");\n"; if (gradient->hasAttributeCoordinateMode()) { m_output << m_option.indent << gradientName << ".setCoordinateMode(QGradient::" << gradient->attributeCoordinateMode() << ");\n"; } const QList<DomGradientStop *> stops = gradient->elementGradientStop(); QListIterator<DomGradientStop *> it(stops); while (it.hasNext()) { const DomGradientStop *stop = it.next(); const DomColor *color = stop->elementColor(); m_output << m_option.indent << gradientName << ".setColorAt(" << stop->attributePosition() << ", " << domColor2QString(color) << ");\n"; } m_output << m_option.indent << "QBrush " << brushName << '(' << gradientName << ");\n"; } else if (style == QLatin1String("TexturePattern")) { const DomProperty *property = brush->elementTexture(); m_output << m_option.indent << "QBrush " << brushName << " = QBrush(" << pixCall(property) << ");\n"; } else { const DomColor *color = brush->elementColor(); m_output << m_option.indent << "QBrush " << brushName << '(' << domColor2QString(color) << ");\n"; m_output << m_option.indent << brushName << ".setStyle(" << "Qt::" << style << ");\n"; }}void WriteInitialization::acceptCustomWidget(DomCustomWidget *node){ Q_UNUSED(node);}void WriteInitialization::acceptCustomWidgets(DomCustomWidgets *node){ Q_UNUSED(node);}void WriteInitialization::acceptTabStops(DomTabStops *tabStops){ QString lastName; const QStringList l = tabStops->elementTabStop(); for (int i=0; i<l.size(); ++i) { const QString name = l.at(i); if (!m_registeredWidgets.contains(name)) { fprintf(stderr, "'%s' isn't a valid widget\n", name.toLatin1().data()); continue; } if (i == 0) { lastName = name; continue; } else if (name.isEmpty() || lastName.isEmpty()) { continue; } m_output << m_option.indent << "QWidget::setTabOrder
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -