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

📄 resource.cpp

📁 这个是Linux的qt源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				}				prop.type = pType;				cw->lstProperties.append( prop );			    }			}			total = w->metaObject()->numSlots( TRUE );			for ( i = 0; i < total; i++ ) {			    const QMetaData *md = w->metaObject()->slot( i, TRUE );			    MetaDataBase::Function funky;			    // Find out if we have a return type.			    if ( md->method->count > 0 ) {				const QUParameter p = md->method->parameters[0];				if ( p.inOut == QUParameter::InOut )				    funky.returnType = p.type->desc();			    }			    funky.function = md->name;			    funky.language = "C++";			    switch ( md->access ) {				case QMetaData::Public:				    funky.access = "public";				    break;				case QMetaData::Protected:				    funky.access = "protected";				    break;				case QMetaData::Private:				    funky.access = "private";				    break;			    }			    cw->lstSlots.append( funky );			}			MetaDataBase::addCustomWidget( cw );		    }		    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( "designer_image.png" );	    // we have to force the pixmap to get a new and unique serial number. Unfortunately detatch() doesn't do that	    pix.convertFromImage( pix.convertToImage() );	}	MetaDataBase::setPixmapKey( formwindow, pix.serialNumber(), arg );	return pix;    }    QPixmap pix = QPixmap::fromMimeSource( "designer_image.png" );    // we have to force the pixmap to get a new and unique serial number. Unfortunately detatch() doesn't do that    pix.convertFromImage( pix.convertToImage() );    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 );    }    QObject *o = 0;    for ( QPtrListIterator<QObject> it ( *l ); ( o = it.current() ); ++it )	if ( !QString( o->name() ).startsWith( "qt_dead_widget_" ) )	    saveObject( o, 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 ( ::qt_cast<Spacer*>(w) ) {	    if ( !changed.contains( "sizeHint" ) )		changed << "sizeHint";	    if ( !changed.contains( "geometry" ) )		changed << "geometry"; 	} else {	    QToolButton *tb = ::qt_cast<QToolButton*>(w);	    if ( tb && !tb->iconSet().isNull() ) {		changed << "iconSet";	    }	}    } 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 ( MetaDataBase::resizeMode( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)w ) ) ) != "Auto"	     && !MetaDataBase::resizeMode( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)w ) ) ).isEmpty() )	    changed << "resizeMode";    }    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 + -