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

📄 resource.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	    ++indent;	    ts << makeIndent( indent ) << "<property name=\"name\">" << endl;	    indent++;	    ts << makeIndent( indent ) << "<cstring>" << entitize( w->name() ) << "</cstring>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</property>" << endl;	    ts << makeIndent( indent ) << "<attribute name=\"title\">" << endl;	    indent++;	    ts << makeIndent( indent ) << "<string>" << entitize( wiz->title( w ) ) << "</string>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</attribute>" << endl;	    saveChildrenOf( w, ts, indent );	    --indent;	    ts << makeIndent( indent ) << "</widget>" << endl;	}    } else if ( obj->inherits( "QMainWindow" ) ) {	saveChildrenOf( ( (QMainWindow*)obj )->centralWidget(), ts, indent );    } else {	bool saved = FALSE;#ifdef QT_CONTAINER_CUSTOM_WIDGETS	if ( WidgetDatabase::isCustomPluginWidget( WidgetDatabase::idFromClassName( className ) ) ) {	    WidgetInterface *iface = 0;	    widgetManager()->queryInterface( className, &iface );	    if ( iface ) {		QWidgetContainerInterfacePrivate *iface2 = 0;		iface->queryInterface( IID_QWidgetContainer, (QUnknownInterface**)&iface2 );		if ( iface2 ) {		    if ( iface2->supportsPages( className ) )  {			QWidgetList containers = iface2->pages( className, (QWidget*)obj );			if ( !containers.isEmpty() ) {			    saved = TRUE;			    int i = 0;			    for ( QWidget *w = containers.first(); w; w = containers.next(), ++i ) {				if ( WidgetDatabase::				     idFromClassName( WidgetFactory::classNameOf( w ) ) == -1 )				    continue; // we don't know this widget				ts << makeIndent( indent ) << "<widget class=\""				   << WidgetFactory::classNameOf( w )				   << "\">" << endl;				++indent;				ts << makeIndent( indent ) << "<property name=\"name\">" << endl;				indent++;				ts << makeIndent( indent ) << "<cstring>" << entitize( w->name() )				   << "</cstring>" << endl;				indent--;				ts << makeIndent( indent ) << "</property>" << endl;				ts << makeIndent( indent ) << "<attribute name=\"label\">" << endl;				indent++;				ts << makeIndent( indent ) << "<cstring>"				   << entitize( iface2->pageLabel( className, (QWidget*)obj, i ) )				   << "</cstring>" << endl;				indent--;				ts << makeIndent( indent ) << "</attribute>" << endl;				saveChildrenOf( w, ts, indent );				--indent;				ts << makeIndent( indent ) << "</widget>" << endl;			    }			}		    } else {			saved = TRUE;			QWidget *w = iface2->containerOfWidget( className, (QWidget*)obj );			ts << makeIndent( indent ) << "<widget class=\""			   << WidgetFactory::classNameOf( w )			   << "\">" << endl;			++indent;			ts << makeIndent( indent ) << "<property name=\"name\">" << endl;			indent++;			ts << makeIndent( indent ) << "<cstring>" << entitize( w->name() )			   << "</cstring>" << endl;			indent--;			ts << makeIndent( indent ) << "</property>" << endl;			saveChildrenOf( w, ts, indent );			--indent;			ts << makeIndent( indent ) << "</widget>" << endl;		    }		    iface2->release();		}		iface->release();	    }	}#endif	if ( !saved )	    saveChildrenOf( obj, ts, indent );    }    indent--;    ts << closeTag;}void Resource::saveItems( QObject *obj, QTextStream &ts, int indent ){    if ( obj->inherits( "QListBox" ) || obj->inherits( "QComboBox" ) ) {	QListBox *lb = 0;	if ( obj->inherits( "QListBox" ) )	    lb = (QListBox*)obj;	else	    lb = ( (QComboBox*)obj )->listBox();	QListBoxItem *i = lb->firstItem();	for ( ; i; i = i->next() ) {	    ts << makeIndent( indent ) << "<item>" << endl;	    indent++;	    QStringList text;	    text << i->text();	    QPtrList<QPixmap> pixmaps;	    if ( i->pixmap() )		pixmaps.append( i->pixmap() );	    saveItem( text, pixmaps, ts, indent );	    indent--;	    ts << makeIndent( indent ) << "</item>" << endl;	}    } else if ( obj->inherits( "QIconView" ) ) {	QIconView *iv = (QIconView*)obj;	QIconViewItem *i = iv->firstItem();	for ( ; i; i = i->nextItem() ) {	    ts << makeIndent( indent ) << "<item>" << endl;	    indent++;	    QStringList text;	    text << i->text();	    QPtrList<QPixmap> pixmaps;	    if ( i->pixmap() )		pixmaps.append( i->pixmap() );	    saveItem( text, pixmaps, ts, indent );	    indent--;	    ts << makeIndent( indent ) << "</item>" << endl;	}    } else if ( obj->inherits( "QListView" ) ) {	QListView *lv = (QListView*)obj;	int i;	for ( i = 0; i < lv->header()->count(); ++i ) {	    ts << makeIndent( indent ) << "<column>" << endl;	    indent++;	    QStringList l;	    l << lv->header()->label( i );	    QPtrList<QPixmap> pix;	    pix.setAutoDelete( TRUE );	    if ( lv->header()->iconSet( i ) )		pix.append( new QPixmap( lv->header()->iconSet( i )->pixmap() ) );	    saveItem( l, pix, ts, indent );	    ts << makeIndent( indent ) << "<property name=\"clickable\">" << endl;	    indent++;	    ts << makeIndent( indent ) << "<bool>" << mkBool( lv->header()->isClickEnabled( i ) )<< "</bool>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</property>" << endl;	    ts << makeIndent( indent ) << "<property name=\"resizable\">" << endl;	    indent++;	    ts << makeIndent( indent ) << "<bool>" << mkBool( lv->header()->isResizeEnabled( i ) ) << "</bool>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</property>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</column>" << endl;	}	saveItem( lv->firstChild(), ts, indent - 1 );    }#ifndef QT_NO_TABLE    else if ( obj->inherits( "QTable" ) ) {	QTable *table = (QTable*)obj;	int i;	QMap<QString, QString> columnFields = MetaDataBase::columnFields( table );	bool isDataTable = table->inherits( "QDataTable" );	for ( i = 0; i < table->horizontalHeader()->count(); ++i ) {	    if ( !table->horizontalHeader()->label( i ).isNull() &&		 table->horizontalHeader()->label( i ).toInt() != i + 1 ||		 table->horizontalHeader()->iconSet( i ) ||		  isDataTable ) {		ts << makeIndent( indent ) << "<column>" << endl;		indent++;		QStringList l;		l << table->horizontalHeader()->label( i );		QPtrList<QPixmap> pix;		pix.setAutoDelete( TRUE );		if ( table->horizontalHeader()->iconSet( i ) )		    pix.append( new QPixmap( table->horizontalHeader()->iconSet( i )->pixmap() ) );		saveItem( l, pix, ts, indent );		if ( table->inherits( "QDataTable" ) && !columnFields.isEmpty() ) {		    ts << makeIndent( indent ) << "<property name=\"field\">" << endl;		    indent++;		    ts << makeIndent( indent ) << "<string>" << entitize( *columnFields.find( l[ 0 ] ) ) << "</string>" << endl;		    indent--;		    ts << makeIndent( indent ) << "</property>" << endl;		}		indent--;		ts << makeIndent( indent ) << "</column>" << endl;	    }	}	for ( i = 0; i < table->verticalHeader()->count(); ++i ) {	    if ( !table->verticalHeader()->label( i ).isNull() &&		 table->verticalHeader()->label( i ).toInt() != i + 1 ||		 table->verticalHeader()->iconSet( i ) ) {		ts << makeIndent( indent ) << "<row>" << endl;		indent++;		QStringList l;		l << table->verticalHeader()->label( i );		QPtrList<QPixmap> pix;		pix.setAutoDelete( TRUE );		if ( table->verticalHeader()->iconSet( i ) )		    pix.append( new QPixmap( table->verticalHeader()->iconSet( i )->pixmap() ) );		saveItem( l, pix, ts, indent );		indent--;		ts << makeIndent( indent ) << "</row>" << endl;	    }	}    }#endif}void Resource::saveItem( QListViewItem *i, QTextStream &ts, int indent ){    QListView *lv = i->listView();    while ( i ) {	ts << makeIndent( indent ) << "<item>" << endl;	indent++;	QPtrList<QPixmap> pixmaps;	QStringList textes;	for ( int c = 0; c < lv->columns(); ++c ) {	    pixmaps.append( i->pixmap( c ) );	    textes << i->text( c );	}	saveItem( textes, pixmaps, ts, indent );	if ( i->firstChild() )	    saveItem( i->firstChild(), ts, indent );	indent--;	ts << makeIndent( indent ) << "</item>" << endl;	i = i->nextSibling();    }}void Resource::savePixmap( const QPixmap &p, QTextStream &ts, int indent, const QString &tagname ){    if ( p.isNull() ) {	ts << makeIndent( indent ) << "<" << tagname << "></"  << tagname << ">" << endl;	return;    }    if ( formwindow && formwindow->savePixmapInline() )	ts << makeIndent( indent ) << "<" << tagname << ">" << saveInCollection( p ) << "</" << tagname << ">" << endl;    else if ( formwindow && formwindow->savePixmapInProject() )	ts << makeIndent( indent ) << "<" << tagname << ">" << MetaDataBase::pixmapKey( formwindow, p.serialNumber() )	   << "</" << tagname << ">" << endl;    else	ts << makeIndent( indent ) << "<" << tagname << ">" << MetaDataBase::pixmapArgument( formwindow, p.serialNumber() )	   << "</" << tagname << ">" << endl;}QPixmap Resource::loadPixmap( const QDomElement &e, const QString &/*tagname*/ ){    QString arg = e.firstChild().toText().data();    if ( formwindow && formwindow->savePixmapInline() ) {	QImage img = loadFromCollection( arg );	QPixmap pix;	pix.convertFromImage( img );	MetaDataBase::setPixmapArgument( formwindow, pix.serialNumber(), arg );	return pix;    } else if ( formwindow && formwindow->savePixmapInProject() ) {	QPixmap pix;	if ( mainwindow && mainwindow->currProject() )	    pix = mainwindow->currProject()->pixmapCollection()->pixmap( arg );	else	    pix = QPixmap::fromMimeSource( "image.png" );	MetaDataBase::setPixmapKey( formwindow, pix.serialNumber(), arg );	return pix;    }    QPixmap pix = QPixmap::fromMimeSource( "image.png" );    MetaDataBase::setPixmapArgument( formwindow, pix.serialNumber(), arg );    return pix;}void Resource::saveItem( const QStringList &text, const QPtrList<QPixmap> &pixmaps, QTextStream &ts, int indent ){    QStringList::ConstIterator it = text.begin();    for ( ; it != text.end(); ++it ) {	ts << makeIndent( indent ) << "<property name=\"text\">" << endl;	indent++;	ts << makeIndent( indent ) << "<string>" << entitize( *it ) << "</string>" << endl;	indent--;	ts << makeIndent( indent ) << "</property>" << endl;    }    for ( int i = 0; i < (int)pixmaps.count(); ++i ) {	QPixmap *p = ( (QPtrList<QPixmap>)pixmaps ).at( i );	ts << makeIndent( indent ) << "<property name=\"pixmap\">" << endl;	indent++;	if ( p )	    savePixmap( *p, ts, indent );	else	    savePixmap( QPixmap(), ts, indent );	indent--;	ts << makeIndent( indent ) << "</property>" << endl;    }}void Resource::saveChildrenOf( QObject* obj, QTextStream &ts, int indent ){    const QObjectList *l = obj->children();    if ( !l )	return; // no children to save    QString closeTag;    // if the widget has a layout we pretend that all widget's childs are childs of the layout - makes the structure nicer    QLayout *layout = 0;    QDesignerGridLayout* grid = 0;    if ( !obj->inherits( "QSplitter" ) &&	 WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( obj ) ) ) &&	 obj->isWidgetType() &&	 WidgetFactory::layoutType( (QWidget*)obj, layout ) != WidgetFactory::NoLayout ) {	WidgetFactory::LayoutType lay = WidgetFactory::layoutType( (QWidget*)obj, layout );	switch ( lay ) {	case WidgetFactory::HBox:	    closeTag = makeIndent( indent ) + "</hbox>";	    ts << makeIndent( indent ) << "<hbox>" << endl;	    ++indent;	    break;	case WidgetFactory::VBox:	    closeTag = makeIndent( indent ) + "</vbox>";	    ts << makeIndent( indent ) << "<vbox>" << endl;	    ++indent;	    break;	case WidgetFactory::Grid:	    closeTag = makeIndent( indent ) + "</grid>";	    ts << makeIndent( indent ) << "<grid>" << endl;	    ++indent;	    grid = (QDesignerGridLayout*) layout;	    break;	default:	    break;	}	// save properties of layout	if ( lay != WidgetFactory::NoLayout )	    saveObjectProperties( layout, ts, indent );    }    for ( QPtrListIterator<QObject> it ( *l ); it.current(); ++it )	saveObject( it.current(), grid, ts, indent );    if ( !closeTag.isEmpty() ) {	indent--;	ts << closeTag << endl;    }}void Resource::saveObjectProperties( QObject *w, QTextStream &ts, int indent ){    QStringList saved;    QStringList changed;    changed = MetaDataBase::changedProperties( w );    if ( w->isWidgetType() ) {	if ( w->inherits( "Spacer" ) ) {	    if ( !changed.contains( "sizeHint" ) )		changed << "sizeHint";	    if ( !changed.contains( "geometry" ) )		changed << "geometry";	}    } else if ( w->inherits( "QLayout" ) ) {	if ( MetaDataBase::spacing( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)w ) ) ) > -1 )	    changed << "spacing";	if ( MetaDataBase::margin( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)w ) ) ) > -1 )	    changed << "margin";    }    if ( w == formwindow->mainContainer() ) {	if ( changed.findIndex( "geometry" ) == -1 )	    changed << "geometry";	if ( changed.findIndex( "caption" ) == -1 )	    changed << "caption";    }    if ( changed.isEmpty() )	    return;    bool inLayout = w != formwindow->mainContainer() && !copying && w->isWidgetType() && ( (QWidget*)w )->parentWidget() &&		    WidgetFactory::layoutType( ( (QWidget*)w )->parentWidget() ) != WidgetFactory::NoLayout;    QStrList lst = w->metaObject()->propertyNames( !w->inherits( "Spacer" ) );

⌨️ 快捷键说明

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