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

📄 qwidgetfactory.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    QDomElement actions = e;    while ( actions.tagName() != "actions" && !actions.isNull() )	actions = actions.nextSibling().toElement();    QDomElement toolbars = e;    while ( toolbars.tagName() != "toolbars" && !toolbars.isNull() )	toolbars = toolbars.nextSibling().toElement();    QDomElement menubar = e;    while ( menubar.tagName() != "menubar" && !menubar.isNull() )	menubar = menubar.nextSibling().toElement();    QDomElement functions = e;    while ( functions.tagName() != "functions" && !functions.isNull() )	functions = functions.nextSibling().toElement();    QDomElement widget;    while ( !e.isNull() ) {	if ( e.tagName() == "class" ) {	    d->translationContext = e.firstChild().toText().data();	} else if ( e.tagName() == "widget" ) {	    widget = e;	} else if ( e.tagName() == "pixmapinproject" ) {	    usePixmapCollection = TRUE;	} else if ( e.tagName() == "layoutdefaults" ) {	    defSpacing = e.attribute( "spacing", QString::number( defSpacing ) ).toInt();	    defMargin = e.attribute( "margin", QString::number( defMargin ) ).toInt();	}	e = e.nextSibling().toElement();    }    if ( !imageCollection.isNull() )	loadImageCollection( imageCollection );    createWidgetInternal( widget, parent, 0, widget.attribute("class", "QWidget") );    QWidget *w = toplevel;    if ( !w )	return 0;    if ( !actions.isNull() )	loadActions( actions );    if ( !toolbars.isNull() )	loadToolBars( toolbars );    if ( !menubar.isNull() )	loadMenuBar( menubar );    if ( !connections.isNull() )	loadConnections( connections, connector );    if ( w && name && qstrlen( name ) > 0 )	w->setName( name );    if ( !tabOrder.isNull() )	loadTabOrder( tabOrder );#if 0    if ( !functions.isNull() ) // compatibiliy with early 3.0 betas	loadFunctions( functions );#endif    return w;}void QWidgetFactory::unpackUInt16( QDataStream& in, Q_UINT16& n ){    Q_UINT8 half;    in >> half;    if ( half == 255 ) {	in >> n;    } else {	n = half;    }}void QWidgetFactory::unpackUInt32( QDataStream& in, Q_UINT32& n ){    Q_UINT16 half;    in >> half;    if ( half == 65535 ) {	in >> n;    } else {	n = half;    }}void QWidgetFactory::unpackByteArray( QDataStream& in, QByteArray& array ){    Q_UINT32 size;    unpackUInt32( in, size );    array.resize( size );    in.readRawBytes( array.data(), size );}void QWidgetFactory::unpackCString( const UibStrTable& strings, QDataStream& in,				    QCString& cstr ){    Q_UINT32 n;    unpackUInt32( in, n );    cstr = strings.asCString( n );}void QWidgetFactory::unpackString( const UibStrTable& strings, QDataStream& in,				   QString& str ){    Q_UINT32 n;    unpackUInt32( in, n );    str = strings.asString( n );}void QWidgetFactory::unpackStringSplit( const UibStrTable& strings,					QDataStream& in, QString& str ){    QString remainder;    unpackString( strings, in, str );    unpackString( strings, in, remainder );    str += remainder;}void QWidgetFactory::unpackVariant( const UibStrTable& strings, QDataStream& in,				    QVariant& value ){    QString imageName;    Q_UINT32 number;    Q_UINT16 count;    Q_UINT16 x;    Q_UINT16 y;    Q_UINT16 width;    Q_UINT16 height;    Q_UINT8 bit;    Q_UINT8 type;    in >> type;    switch ( type ) {    case QVariant::String:	unpackString( strings, in, value.asString() );	break;    case QVariant::Pixmap:	unpackString( strings, in, imageName );	if ( imageName.isEmpty() ) {	    value.asPixmap() = QPixmap();	} else {	    value.asPixmap() = loadPixmap( imageName );	}	break;    case QVariant::Image:	unpackString( strings, in, imageName );	if ( imageName.isEmpty() ) {	    value.asImage() = QImage();	} else {	    value.asImage() = loadFromCollection( imageName );	}	break;    case QVariant::IconSet:	unpackString( strings, in, imageName );	if ( imageName.isEmpty() ) {	    value.asIconSet() = QIconSet();	} else {	    value.asIconSet() = QIconSet( loadPixmap(imageName) );	}	break;    case QVariant::StringList:	unpackUInt16( in, count );	while ( count-- ) {	    QString str;	    unpackString( strings, in, str );	    value.asStringList().append( str );	}	break;    case QVariant::Rect:	unpackUInt16( in, x );	unpackUInt16( in, y );	unpackUInt16( in, width );	unpackUInt16( in, height );	value = QRect( x, y, width, height );	break;    case QVariant::Size:	unpackUInt16( in, width );	unpackUInt16( in, height );	value = QSize( width, height );	break;    case QVariant::Color:	in >> value.asColor();	break;    case QVariant::Point:	unpackUInt16( in, x );	unpackUInt16( in, y );	value = QPoint( x, y );	break;    case QVariant::Int:	unpackUInt32( in, number );	value = (int) number;	break;    case QVariant::Bool:	in >> bit;	value = QVariant( bit != 0, 0 );	break;    case QVariant::Double:	in >> value.asDouble();	break;    case QVariant::CString:	unpackCString( strings, in, value.asCString() );	break;    case QVariant::Cursor:	in >> value.asCursor();	break;    case QVariant::Date:	in >> value.asDate();	break;    case QVariant::Time:	in >> value.asTime();	break;    case QVariant::DateTime:	in >> value.asDateTime();	break;    default:	in >> value;    }}void QWidgetFactory::inputSpacer( const UibStrTable& strings, QDataStream& in,				  QLayout *parent ){    QCString name;    QVariant value;    QCString comment;    QSizePolicy::SizeType sizeType = QSizePolicy::Preferred;    bool vertical = FALSE;    int w = 0;    int h = 0;    Q_UINT16 column = 0;    Q_UINT16 row = 0;    Q_UINT16 colspan = 1;    Q_UINT16 rowspan = 1;    Q_UINT8 objectTag;    in >> objectTag;    while ( !in.atEnd() && objectTag != Object_End ) {	switch ( objectTag ) {	case Object_GridCell:	    unpackUInt16( in, column );	    unpackUInt16( in, row );	    unpackUInt16( in, colspan );	    unpackUInt16( in, rowspan );	    break;	case Object_VariantProperty:	    unpackCString( strings, in, name );	    unpackVariant( strings, in, value );	    if ( name == "orientation" ) {		vertical = ( value == "Vertical" );	    } else if ( name == "sizeHint" ) {		w = value.toSize().width();		h = value.toSize().height();	    } else if ( name == "sizeType" ) {		sizeType = stringToSizeType( value.toString() );	    }	    break;	default:	    qFatal( "Corrupt" );	}	in >> objectTag;    }    if ( parent != 0 ) {	QSpacerItem *spacer;	if ( vertical ) {	    spacer = new QSpacerItem( w, h, QSizePolicy::Minimum, sizeType );	} else {	    spacer = new QSpacerItem( w, h, sizeType, QSizePolicy::Minimum );	}	if ( parent->inherits("QGridLayout") ) {	    ((QGridLayout *) parent)->addMultiCell( spacer, row,		    row + rowspan - 1, column, column + colspan - 1,		    vertical ? Qt::AlignHCenter : Qt::AlignVCenter );	} else {	    parent->addItem( spacer );	}    }}void QWidgetFactory::inputColumnOrRow( const UibStrTable& strings,				       QDataStream& in, QObject *parent,				       bool isRow ){    QString text;    QPixmap pixmap;    QString field;    bool clickable = TRUE;    bool resizable = TRUE;    QCString name;    QVariant value;    QCString comment;    QString str;    Q_UINT8 objectTag;    in >> objectTag;    while ( !in.atEnd() && objectTag != Object_End ) {	switch ( objectTag ) {	case Object_TextProperty:	    unpackCString( strings, in, name );	    unpackCString( strings, in, value.asCString() );	    unpackCString( strings, in, comment );	    str = translate( value.asCString(), comment );	    if ( name == "field" ) {		field = str;	    } else if ( name == "text" ) {		text = str;	    }	    break;	case Object_VariantProperty:	    unpackCString( strings, in, name );	    unpackVariant( strings, in, value );	    if ( name == "clickable" ) {		clickable = value.toBool();	    } else if ( name == "pixmap" ) {		pixmap = value.asPixmap();	    } else if ( name == "resizable" ) {		resizable = value.toBool();	    }	    break;	default:	    qFatal( "Corrupt" );	}	in >> objectTag;    }    if ( parent != 0 ) {	if ( parent->inherits("QListView") ) {	    createListViewColumn( (QListView *) parent, text, pixmap, clickable,				  resizable );#ifndef QT_NO_TABLE	} else if ( parent->inherits("QTable") ) {	    createTableColumnOrRow( (QTable *) parent, text, pixmap, field,				    isRow );#endif	}    }}void QWidgetFactory::inputItem( const UibStrTable& strings, QDataStream& in,				QObject *parent, QListViewItem *parentItem ){    QStringList texts;    QValueList<QPixmap> pixmaps;    QCString name;    QVariant value;    QCString comment;    Q_UINT8 objectTag;    QListView *listView = 0;    if ( parent != 0 && parent->inherits("QListView") )	parent = (QListView *) parent;    QListViewItem *item = 0;    if ( listView != 0 ) {	if ( parentItem == 0 ) {	    item = new QListViewItem( listView, d->lastItem );	} else {	    item = new QListViewItem( parentItem, d->lastItem );	}	d->lastItem = item;    }    in >> objectTag;    while ( !in.atEnd() && objectTag != Object_End ) {	switch ( objectTag ) {	case Object_Item:	    if ( listView != 0 )		d->lastItem->setOpen( TRUE );	    inputItem( strings, in, parent, item );	    break;	case Object_TextProperty:	    unpackCString( strings, in, name );	    unpackCString( strings, in, value.asCString() );	    unpackCString( strings, in, comment );	    if ( name == "text" )		texts << translate( value.asCString(), comment );	    break;	case Object_VariantProperty:	    unpackCString( strings, in, name );	    unpackVariant( strings, in, value );	    if ( name == "pixmap" )		pixmaps << value.asPixmap();	    break;	default:	    qFatal( "Corrupt" );	}	in >> objectTag;    }    if ( listView != 0 ) {	int i = 0;	QStringList::ConstIterator t = texts.begin();	while ( t != texts.end() ) {	    item->setText( i, *t );	    ++i;	    ++t;	}	int j = 0;	QValueList<QPixmap>::ConstIterator p = pixmaps.begin();	while ( p != pixmaps.end() ) {	    item->setPixmap( j, *p );	    ++j;	    ++p;	}    } else {	QString text = texts.last();	QPixmap pixmap = pixmaps.last();	if ( parent != 0 ) {	    if ( parent->inherits("QComboBox") ||		 parent->inherits("QListBox") ) {		QListBox *listBox = (QListBox *) parent->qt_cast( "QListBox" );		if ( listBox == 0 )		    listBox = ((QComboBox *) parent)->listBox();		if ( pixmap.isNull() ) {		    (void) new QListBoxText( listBox, text );		} else {		    (void) new QListBoxPixmap( listBox, pixmap, text );		}    #ifndef QT_NO_ICONVIEW	    } else if ( parent->inherits("QIconView") ) {		(void) new QIconViewItem( (QIconView *) parent, text, pixmap );    #endif	    }	}    }}void QWidgetFactory::inputMenuItem( QObject **objects,				    const UibStrTable& strings, QDataStream& in,				    QMenuBar *menuBar ){    QCString name;    QCString text;    Q_UINT16 actionNo;    Q_UINT8 objectTag;    unpackCString( strings, in, name );    unpackCString( strings, in, text );

⌨️ 快捷键说明

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