📄 dlg2ui.cpp
字号:
break; case QVariant::Int: case QVariant::UInt: emitSimpleValue( QString("number"), val.toString() ); break; case QVariant::Rect: emitOpening( QString("rect") ); emitSimpleValue( QString("x"), QString::number(val.toRect().x()) ); emitSimpleValue( QString("y"), QString::number(val.toRect().y()) ); emitSimpleValue( QString("width"), QString::number(val.toRect().width()) ); emitSimpleValue( QString("height"), QString::number(val.toRect().height()) ); emitClosing( QString("rect") ); break; case QVariant::Point: emitOpening( QString("point") ); emitSimpleValue( QString("x"), QString::number(val.toPoint().x()) ); emitSimpleValue( QString("y"), QString::number(val.toPoint().y()) ); emitClosing( QString("point") ); break; case QVariant::Size: emitOpening( QString("size") ); emitSimpleValue( QString("width"), QString::number(val.toSize().width()) ); emitSimpleValue( QString("height"), QString::number(val.toSize().height()) ); emitClosing( QString("size") ); break; case QVariant::Color: emitColor( val.toColor() ); break; case QVariant::Font: emitOpening( QString("font") ); emitSimpleValue( QString("family"), val.toFont().family() ); emitSimpleValue( QString("pointsize"), QString::number(val.toFont().pointSize()) ); if ( val.toFont().bold() ) emitSimpleValue( QString("bold"), QChar('1') ); if ( val.toFont().italic() ) emitSimpleValue( QString("italic"), QChar('1') ); if ( val.toFont().underline() ) emitSimpleValue( QString("underline"), QChar('1') ); if ( val.toFont().strikeOut() ) emitSimpleValue( QString("strikeout"), QChar('1') ); emitClosing( QString("font") ); break; case QVariant::Palette: emitOpening( QString("palette") ); emitColorGroup( QString("active"), val.toPalette().active() ); emitColorGroup( QString("disabled"), val.toPalette().disabled() ); emitColorGroup( QString("inactive"), val.toPalette().inactive() ); emitClosing( QString("palette") ); break; default: emitSimpleValue( QString("fnord"), QString::null ); } }}void Dlg2Ui::emitProperty( const QString& prop, const QVariant& val, const QString& stringType ){ emitOpening( QString("property"), attribute(QString("name"), prop) ); emitVariant( val, stringType ); emitClosing( QString("property") );}void Dlg2Ui::emitAttribute( const QString& attr, const QVariant& val, const QString& stringType ){ emitOpening( QString("attribute"), attribute(QString("name"), attr) ); emitVariant( val, stringType ); emitClosing( QString("attribute") );}void Dlg2Ui::emitOpeningLayout( bool needsWidget, const QString& layoutKind, const QString& name, int border, int autoBorder ){ QString namex = name; if ( namex.isEmpty() ) namex = QString( "Layout%1" ).arg( uniqueLayout++ ); if ( needsWidget ) { emitOpeningWidget( QString("QLayoutWidget") ); emitProperty( QString("name"), namex.latin1() ); } emitOpening( layoutKind ); if ( !needsWidget ) emitProperty( QString("name"), namex.latin1() ); if ( border != 5 ) emitProperty( QString("margin"), border ); if ( autoBorder != 5 ) emitProperty( QString("spacing"), autoBorder ); yyLayoutDepth++;}void Dlg2Ui::flushWidgets(){ QRegExp widgetForLayout( QString("Q(?:[HV]Box|Grid)") ); while ( !yyWidgetMap.isEmpty() ) { QString className = widgetClassName( *yyWidgetMap.begin() ); if ( !widgetForLayout.exactMatch(className) ) { emitOpeningWidget( className ); emitWidgetBody( *yyWidgetMap.begin(), FALSE ); emitClosing( QString("widget") ); } yyWidgetMap.remove( yyWidgetMap.begin() ); }}void Dlg2Ui::emitClosingLayout( bool needsWidget, const QString& layoutKind ){ yyLayoutDepth--; /* Qt Designer can deal with layouted widgets and with fixed-position widgets, but not both at the same time. If such a thing happens, we arbitrarily put the fixed-position widgets in the layout so that they at least show up in Qt Designer. */ if ( yyLayoutDepth == 0 ) flushWidgets(); emitClosing( layoutKind ); if ( needsWidget ) emitClosing( QString("widget") );}bool Dlg2Ui::isWidgetType( const QDomElement& e ){ return yyWidgetTypeSet.contains( e.tagName() );}void Dlg2Ui::emitSpacer( int spacing, int stretch ){ QString orientationStr; QSize sizeHint; QString sizeType = QString( "Fixed" ); if ( yyBoxKind == QString("hbox") ) { orientationStr = QString( "Horizontal" ); sizeHint = QSize( spacing, 20 ); } else { orientationStr = QString( "Vertical" ); sizeHint = QSize( 20, spacing ); } if ( stretch > 0 ) sizeType = QString( "Expanding" ); emitOpening( QString("spacer") ); emitProperty( QString("name"), QString("Spacer%1").arg(uniqueSpacer++).latin1() ); emitProperty( QString("orientation"), orientationStr, QString("enum") ); if ( spacing > 0 ) emitProperty( QString("sizeHint"), sizeHint, QString("qsize") ); emitProperty( QString("sizeType"), sizeType, QString("enum") ); emitClosing( QString("spacer") );}QString Dlg2Ui::filteredFlags( const QString& flags, const QRegExp& filter ){ QRegExp evil( QString("[^0-9A-Z_a-z|]") ); QString f = flags; f.replace( evil, QString::null ); QStringList splitted = QStringList::split( QChar('|'), f ); return splitted.grep( filter ).join( QChar('|') );}void Dlg2Ui::emitFrameStyleProperty( int style ){ QString shape; QString shadow; switch ( style & QFrame::MShape ) { case QFrame::Box: shape = QString( "Box" ); break; case QFrame::Panel: shape = QString( "Panel" ); break; case QFrame::WinPanel: shape = QString( "WinPanel" ); break; case QFrame::HLine: shape = QString( "HLine" ); break; case QFrame::VLine: shape = QString( "VLine" ); break; case QFrame::StyledPanel: shape = QString( "StyledPanel" ); break; case QFrame::PopupPanel: shape = QString( "PopupPanel" ); break; case QFrame::MenuBarPanel: shape = QString( "MenuBarPanel" ); break; case QFrame::ToolBarPanel: shape = QString( "ToolBarPanel" ); break; case QFrame::LineEditPanel: shape = QString( "LineEditPanel" ); break; case QFrame::TabWidgetPanel: shape = QString( "TabWidgetPanel" ); break; case QFrame::GroupBoxPanel: shape = QString( "GroupBoxPanel" ); break; default: shape = QString( "NoFrame" ); } switch ( style & QFrame::MShadow ) { case QFrame::Raised: shadow = QString( "Raised" ); break; case QFrame::Sunken: shadow = QString( "Sunken" ); break; default: shadow = QString( "Plain" ); } emitProperty( QString("frameShape"), shape, QString("enum") ); emitProperty( QString("frameShadow"), shadow, QString("enum") );}void Dlg2Ui::emitWidgetBody( const QDomElement& e, bool layouted ){ QRegExp align( QString("^(?:Align|WordBreak$)") ); QRegExp frameShape( QString( "^(?:NoFrame|Box|(?:Win|Styled|Popup|(?:Menu|Tool)Bar)?Panel|" "[HV]Line)$") ); QRegExp frameShadow( QString( "^(?:Plain|Raised|Sunken)$") ); QRegExp numeric( QString("[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+") ); QRegExp connex( QString( "\\s*\\[(BaseClass|P(?:ublic|rotected))\\]\\s*([0-9A-Z_a-z]+)\\s*" "-->\\s*([0-9A-Z_a-z]+)\\s*(\\([^()]*\\))\\s*") ); QRegExp qdialogSlots( QString( "done\\(\\s*int\\s*\\)|(?:accept|reject)\\(\\s*\\)") ); QString userClassHeader; QString userClassName; QString parentTagName; QString name; QString variableName; QMap<QString, int> pp; QDomNode n = e; while ( !n.isNull() ) { if ( isWidgetType(n.toElement()) ) { parentTagName = n.toElement().tagName(); pp = yyPropertyMap[parentTagName]; n = n.firstChild(); } else { QString tagName = n.toElement().tagName(); QMap<QString, int>::ConstIterator p = pp.find( tagName ); if ( p == pp.end() ) { /* These properties are not in the propertyDefs table, since they are found in many classes anyway and need to be treated the same in each case. */ if ( tagName == QString("Alignement") || tagName == QString("Alignment") ) { QString flags = getValue( n.toElement(), tagName ) .toString(); flags = filteredFlags( flags, align ); if ( !flags.isEmpty() ) emitProperty( QString("alignment"), flags, QString("set") ); } else if ( tagName == QString("ItemList") ) { QDomNode child = n.firstChild(); while ( !child.isNull() ) { if ( child.toElement().tagName() == QString("Item") ) { QString text = getTextValue( child ); emitOpening( QString("item") ); emitProperty( QString("text"), text ); emitClosing( QString("item") ); } child = child.nextSibling(); } } } else { QString propertyName( propertyDefs[*p].qtName ); if ( propertyName.isEmpty() ) { /* These properties are in the propertyDefs table, but they have no direct Qt equivalent. */ if ( parentTagName == QString("ComboBox") ) { if ( tagName == QString("Style") ) { if ( getTextValue(n) == QString("ReadWrite") ) emitProperty( QString("editable"), QVariant(TRUE, 0) ); } } else if ( parentTagName == QString("DlgWidget") ) { if ( tagName == QString("Name") ) { name = getTextValue( n ); } else if ( tagName == QString("Rect") ) { QRect rect = getValue( n.toElement(), tagName, QString("qrect") ) .toRect(); if ( !layouted ) emitProperty( QString("geometry"), rect, QString("qrect") ); } else if ( tagName == QString("SignalConnection") ) { QDomNode child = n.firstChild(); while ( !child.isNull() ) { if ( child.toElement().tagName() == QString("Signal") ) { QString text = getTextValue( child ); if ( connex.exactMatch(text) ) { DlgConnection c; c.sender = getValue( n.parentNode().childNodes(), QString("Name") ).toString(); c.signal = connex.cap( 2 ) + connex.cap( 4 ); c.slot = connex.cap( 3 ) + connex.cap( 4 ); yyConnections.append( c ); if ( connex.cap(1) != QString("BaseClass") && !qdialogSlots.exactMatch(c.slot) ) yySlots.insert( c.slot, connex.cap(1) ); } } child = child.nextSibling(); } } else if ( tagName == QString("Variable") ) { variableName = getTextValue( n ); } } else if ( parentTagName == QString("Frame") ) { if ( tagName == QString("Style") ) { int style = getValue( n.toElement(), tagName, QString("integer") ).toInt(); emitFrameStyleProperty( style ); } } else if ( parentTagName == QString("LCDNumber") ) { if ( tagName == QString("Value") ) { QString text = getValue( n.toElement(), tagName ) .toString(); if ( numeric.exactMatch(text) ) emitProperty( QString("value"), text.toDouble() ); } } else if ( parentTagName == QString("ListView") ) { if ( tagName == QString("HeaderInformation") ) { int columnNo = 1; QDomNode child = n.firstChild(); while ( !child.isNull() ) { if ( child.toElement().tagName() == QString("Header") ) { QString text = getValue( child.childNodes(), QString("Text") ) .toString(); if ( text.isEmpty() ) text = QString( "Column %1" ) .arg( columnNo ); emitOpening( QString("column") ); emitProperty( QString("text"), text ); emitClosing( QString("column") ); } child = child.nextSibling(); columnNo++; } } } else if ( parentTagName == QString("TabBar") ) { if ( tagName == QString("TabNames") ) { QDomNode child = n.firstChild(); while ( !child.isNull() ) { if ( child.toElement().tagName() == QString("Tab") ) { QString text = getTextValue( child ); emitOpeningWidget( QString("QWidget") ); emitProperty( QString("name"), "tab" ); emitAttribute( QString("title"), text ); emitClosing( QString("widget") ); } child = child.nextSibling(); } } } else if ( parentTagName == QString("User") ) { if ( tagName == QString("UserClassHeader") ) { userClassHeader = getTextValue( n ); } else if ( tagName == QString("UserClassName") ) { userClassName = getTextValue( n ); } } } else { /* These properties are in the propertyDefs table; they have a direct Qt equivalent. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -