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

📄 resource.cpp

📁 Trolltech公司发布的基于C++图形开发环境
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    formwindow->setPropertyShowingBlocked( FALSE );    formwindow->emitShowProperties();    buf.close();    PasteCommand *cmd = new PasteCommand( FormWindow::tr( "Paste" ), formwindow, widgets );    formwindow->commandHistory()->addCommand( cmd );}void Resource::saveObject( QObject *obj, QDesignerGridLayout* grid, QTextStream &ts, int indent ){    if ( obj && obj->isWidgetType() && ( (QWidget*)obj )->isHidden() )	return;    QString closeTag;    if ( obj->isWidgetType() ) {	const char* className = WidgetFactory::classNameOf( obj );	if ( obj->isA( "CustomWidget" ) )	    usedCustomWidgets << QString( className );	if ( obj != formwindow && !formwindow->widgets()->find( (QWidget*)obj ) )	    return; // we don't know anything about this thing	QString attributes;	if ( grid ) {	    QDesignerGridLayout::Item item = grid->items[ (QWidget*)obj ];	    attributes += QString(" row=\"") + QString::number(item.row) + "\" ";	    attributes += QString(" column=\"") + QString::number(item.column) + "\" ";	    if ( item.rowspan * item.colspan != 1 ) {		attributes += QString(" rowspan=\"") + QString::number(item.rowspan) + "\" ";		attributes += QString(" colspan=\"") + QString::number(item.colspan) + "\" ";	    }	}		if ( qstrcmp( className, "Spacer" ) == 0 ) {	    closeTag = makeIndent( indent ) + "</spacer>\n";	    ts << makeIndent( indent ) << "<spacer" << attributes << ">" << endl;	    ++indent;	} else {	    closeTag = makeIndent( indent ) + "</widget>\n";	    ts << makeIndent( indent ) << "<widget" << attributes << ">" << endl;	    ++indent;	    ts << makeIndent( indent ) << "<class>" << className << "</class>" << endl;	}	if ( WidgetFactory::hasItems( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( obj ) ) ) )	    saveItems( obj, ts, indent );	saveObjectProperties( obj, ts, indent );    } else {	// test for other objects we created. Nothing so far.	return;    }    if ( obj->inherits( "QTabWidget" ) ) {	QTabWidget* tw = (QTabWidget*) obj;	QObjectList* tmpl = tw->queryList( "QWidgetStack" );	const QObjectList *l = tmpl->first()->children();	for ( QListIterator<QObject> it ( *l ); it.current(); ++it ) {	    if ( !it.current()->isWidgetType() ||		 qstrcmp( it.current()->className(), "QWidgetStackPrivate::Invisible" ) == 0 ||		 !( ((QDesignerTabWidget*)tw)->tabBar()->tab(  ((QWidgetStack*)tmpl->first())->id( ((QWidget*)it.current()) ) ) ) )		continue;	    if ( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( it.current() ) ) == -1 )		continue; // we don't know this widget	    ts << makeIndent( indent ) << "<widget>" << endl;	    ++indent;	    ts << makeIndent( indent ) << "<class>" << "QWidget" << "</class>" << endl;	    ts << makeIndent( indent ) << "<property stdset=\"1\">" << endl;	    indent++;	    ts << makeIndent( indent ) << "<name>name</name>" << endl;	    ts << makeIndent( indent ) << "<cstring>" << entitize( it.current()->name() ) << "</cstring>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</property>" << endl;	    ts << makeIndent( indent ) << "<attribute>" << endl;	    indent++;	    ts << makeIndent( indent ) << "<name>" << "title" << "</name>" << endl;	    ts << makeIndent( indent ) << "<string>" << entitize( tw->tabLabel( (QWidget*)it.current() ) ) << "</string>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</attribute>" << endl;;	    saveChildrenOf( it.current(), ts, indent );	    --indent;	    ts << makeIndent( indent ) << "</widget>" << endl;	}	delete tmpl;    } else if ( obj->inherits( "QWizard" ) ) {	QWizard* wiz = (QWizard*)obj;	QObjectList* tmpl = wiz->queryList( "QWidgetStack" );	const QObjectList *l = tmpl->first()->children();	for ( QListIterator<QObject> it ( *l ); it.current(); ++it ) {	    if ( !it.current()->isWidgetType() ||		 qstrcmp( it.current()->className(), "QWidgetStackPrivate::Invisible" ) == 0 ||		 ( (QDesignerWizard*)wiz )->isPageRemoved( (QWidget*)it.current() ) )		continue;	    if ( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( it.current() ) ) == -1 )		continue; // we don't know this widget	    ts << makeIndent( indent ) << "<widget>" << endl;	    ++indent;	    ts << makeIndent( indent ) << "<class>" << "QWidget" << "</class>" << endl;		    ts << makeIndent( indent ) << "<property stdset=\"1\">" << endl;	    indent++;	    ts << makeIndent( indent ) << "<name>name</name>" << endl;	    ts << makeIndent( indent ) << "<cstring>" << entitize( it.current()->name() ) << "</cstring>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</property>" << endl;		    ts << makeIndent( indent ) << "<attribute>" << endl;	    indent++;	    ts << makeIndent( indent ) << "<name>" << "title" << "</name>" << endl;	    ts << makeIndent( indent ) << "<string>" << entitize( wiz->title( (QWidget*)it.current() ) ) << "</string>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</attribute>" << endl;;	    saveChildrenOf( it.current(), ts, indent );	    --indent;	    ts << makeIndent( indent ) << "</widget>" << endl;	}	delete tmpl;    } else {	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();	    QList<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();	    QList<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 );	    QList<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>" << endl;	    indent++;	    ts << makeIndent( indent ) << "<name>clickable</name>" << endl;	    ts << makeIndent( indent ) << "<bool>" << mkBool( lv->header()->isClickEnabled( i ) )<< "</bool>" << endl;	    indent--;	    ts << makeIndent( indent ) << "</property>" << endl;	    ts << makeIndent( indent ) << "<property>" << endl;	    indent++;	    ts << makeIndent( indent ) << "<name>resizeable</name>" << endl;	    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 );    }}void Resource::saveItem( QListViewItem *i, QTextStream &ts, int indent ){    QListView *lv = i->listView();    while ( i ) {	ts << makeIndent( indent ) << "<item>" << endl;	indent++;	QList<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 ){    if ( p.isNull() ) {	ts << makeIndent( indent ) << "<pixmap></pixmap>" << endl;	return;    }    if ( formwindow && !formwindow->savePixmapInline() )	ts << makeIndent( indent ) << "<pixmap>" << MetaDataBase::pixmapArgument( formwindow, p.serialNumber() ) << "</pixmap>" << endl;    else	ts << makeIndent( indent ) << "<pixmap>" << saveInCollection( p ) << "</pixmap>" << endl;}QPixmap Resource::loadPixmap( const QDomElement &e ){    QString arg = e.firstChild().toText().data();    if ( formwindow && !formwindow->savePixmapInline() ) {	QPixmap pix = PixmapChooser::loadPixmap( "image.xpm" );	MetaDataBase::setPixmapArgument( formwindow, pix.serialNumber(), arg );	return pix;    }	    QImage img = loadFromCollection( arg );    QPixmap pix;    pix.convertFromImage( img );    MetaDataBase::setPixmapArgument( formwindow, pix.serialNumber(), arg );    return pix;}void Resource::saveItem( const QStringList &text, const QList<QPixmap> &pixmaps, QTextStream &ts, int indent ){    QStringList::ConstIterator it = text.begin();    for ( ; it != text.end(); ++it ) {	ts << makeIndent( indent ) << "<property>" << endl;	indent++;	ts << makeIndent( indent ) << "<name>text</name>" << endl;	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 = ( (QList<QPixmap>)pixmaps ).at( i );	ts << makeIndent( indent ) << "<property>" << endl;	indent++;	ts << makeIndent( indent ) << "<name>pixmap</name>" << endl;	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->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 ( QListIterator<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 changed;    if ( w->isWidgetType() ) {	changed = MetaDataBase::changedProperties( w );	if ( w->inherits( "Spacer" ) ) {	    if ( changed.find( "sizeHint" ) == changed.end() )		changed << "sizeHint";	}    } else if ( w->inherits( "QLayout" ) ) { // #### should be cleaner (RS)	changed << "margin" << "spacing";    }    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" ) );    for ( QListIterator<char> it( lst ); it.current(); ++it ) {	if ( changed.find( QString::fromLatin1( it.current() ) ) == changed.end() )	    continue;	const QMetaProperty* p = w->metaObject()->property( it.current(), TRUE );	if ( !p || !p->stored( w ) || ( inLayout && qstrcmp( p->name(), "geometry" ) == 0 ) )	    continue;	if ( w->inherits( "QLabel" ) && qstrcmp( p->name(), "pixmap" ) == 0 &&	     ( !( (QLabel*)w )->pixmap() || ( (QLabel*)w )->pixmap()->isNull() ) )	    continue;	if ( qstrcmp( p->name(), "name" ) == 0 )	    knownNames << w->property( "name" ).toString();	ts << makeIndent( indent ) << "<property";	if ( p->testFlags( QMetaProperty::StdSet ) )	    ts << " stdset=\"1\"";	ts << ">" << endl;	indent++;	ts << makeIndent( indent ) << "<name>" << it.current() << "</name>" << endl;		if ( p->isSetType() ) {	    saveSetProperty( w, it.current(), QVariant::nameToType( p->type() ), ts, indent );	} else if ( p->isEnumType() ) {	    saveEnumProperty( w, it.current(), QVariant::nameToType( p->type() ), ts, indent );	} else {	    saveProperty( w, it.current(), w->property( p->name() ), QVariant::nameToType( p->type() ), ts, indent );	}	indent--;	ts << makeIndent( indent ) << "</property>" << endl;    }    if ( w->isWidgetType() && MetaDataBase::fakeProperties( w ) ) {	QMap<QString, QVariant>* fakeProperties = MetaDataBase::fakeProperties( w );	for ( QMap<QString, QVariant>::Iterator fake = fakeProperties->begin();

⌨️ 快捷键说明

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