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

📄 dlg2ui.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	    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 + -