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

📄 project.cpp

📁 qt专门用于嵌入式的图形开发GUI
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    bool b = conn->open( suppressDialog );    return b;#else    Q_UNUSED( connection );    Q_UNUSED( suppressDialog );    return FALSE;#endif}/*! Closes the database \a connection.*/void Project::closeDatabase( const QString &connection ){#ifndef QT_NO_SQL    DatabaseConnection *conn = databaseConnection( connection );    if ( connection.isEmpty() && !conn )	conn = databaseConnection( "(default)" );    if ( !conn )	return;    conn->close();#else    Q_UNUSED( connection );#endif}// void Project::formClosed( FormWindow *fw )// {//     formWindows.remove( fw );// }QObjectList *Project::formList( bool resolveFakeObjects ) const{    QObjectList *l = new QObjectList;    for ( QPtrListIterator<FormFile> forms(formfiles);   forms.current(); ++forms ) {	FormFile* f = forms.current();	if ( f->formWindow() ) {	    if ( resolveFakeObjects && f->formWindow()->isFake() )		l->append( objectForFakeForm( f->formWindow() ) );	    else		l->append( f->formWindow()->child( 0, "QWidget" ) );	} else if ( f->isFake() ) {	    l->append( objectForFakeFormFile( f ) );	}    }    return l;}DesignerProject *Project::iFace(){    if ( !iface )	iface = new DesignerProjectImpl( this );    return iface;}void Project::setLanguage( const QString &l ){    if ( l == lang )	return;    lang = l;    is_cpp = lang == "C++";    updateCustomSettings();    modified = TRUE;}QString Project::language() const{    return lang;}void Project::setCustomSetting( const QString &key, const QString &value ){    customSettings.remove( key );    customSettings.insert( key, value );    modified = TRUE;}QString Project::customSetting( const QString &key ) const{    return *customSettings.find( key );}void Project::updateCustomSettings(){    if ( !projectSettingsPluginManager )	return;/*    ProjectSettingsInterface *iface = 0;    projectSettingsPluginManager->queryInterface( lang, (QUnknownInterface**)&iface );    if ( !iface )	return;    csList = iface->projectSettings();    iface->release();*/    QInterfacePtr<ProjectSettingsInterface> iface;    projectSettingsPluginManager->queryInterface( lang, &iface );    if ( !iface )	return;    csList = iface->projectSettings();    customSettings.clear();}void Project::setActive( bool b ){    pixCollection->setActive( b );}void Project::addSourceFile( SourceFile *sf ){    sourcefiles.append( sf );    modified = TRUE;    emit sourceFileAdded( sf );}SourceFile* Project::findSourceFile( const QString& filename, SourceFile *ignore ) const{    QPtrListIterator<SourceFile> it(sourcefiles);    while ( it.current() ) {	if ( it.current() != ignore && it.current()->fileName() == filename )	    return it.current();	++it;    }    return 0;}FormFile* Project::findFormFile( const QString& filename, FormFile *ignore ) const{    QPtrListIterator<FormFile> it(formfiles);    while ( it.current() ) {	if ( it.current() != ignore && it.current()->fileName() == filename )	    return it.current();	++it;    }    return 0;}void Project::setIncludePath( const QString &platform, const QString &path ){    if ( inclPath[platform] == path )	return;    inclPath.replace( platform, path );    modified = TRUE;}void Project::setLibs( const QString &platform, const QString &path ){    lbs.replace( platform, path );}void Project::setDefines( const QString &platform, const QString &path ){    defs.replace( platform, path );}void Project::setConfig( const QString &platform, const QString &config ){    cfg.replace( platform, config );}QString Project::config( const QString &platform ) const{    return cfg[ platform ];}QString Project::libs( const QString &platform ) const{    return lbs[ platform ];}QString Project::defines( const QString &platform ) const{    return defs[ platform ];}QString Project::includePath( const QString &platform ) const{    return inclPath[ platform ];}QString Project::templte() const{    return templ;}void Project::setTemplate( const QString &t ){    templ = t;}void Project::readPlatformSettings( const QString &contents,				    const QString &setting,				    QMap<QString, QString> &res ){    const QString platforms[] = { "", "win32", "unix", "mac", QString::null };    for ( int i = 0; platforms[ i ] != QString::null; ++i ) {	QString p = platforms[ i ];	if ( !p.isEmpty() )	    p += ":";	QStringList lst = parse_multiline_part( contents, p + setting );	QString s = lst.join( " " );	QString key = platforms[ i ];	if ( key.isEmpty() )	    key = "(all)";	res.replace( key, s );    }}void Project::removePlatformSettings( QString &contents, const QString &setting ){    const QString platforms[] = { "win32", "unix", "mac", "", QString::null };    for ( int i = 0; platforms[ i ] != QString::null; ++i ) {	QString p = platforms[ i ];	if ( !p.isEmpty() )	    p += ":";	remove_multiline_contents( contents, p + setting );    }}void Project::writePlatformSettings( QString &contents, const QString &setting,				     const QMap<QString, QString> &input ){    const QString platforms[] = { "", "win32", "unix", "mac", QString::null };    int i;    LanguageInterface *iface = MetaDataBase::languageInterface( lang );    if (iface && (setting == "SOURCES" || setting == "HEADERS")) // The (all) part will be saved later on        i = 1;    else	i = 0;    for (; platforms[ i ] != QString::null; ++i ) {	QString p = platforms[ i ];	if ( !p.isEmpty() )	    p += ":";	QString key = platforms[ i ];	if ( key.isEmpty() )	    key = "(all)";	QMap<QString, QString>::ConstIterator it = input.find( key );	if ( it == input.end() || (*it).isEmpty() )	    continue;	contents += p + setting + "\t+= " + *it + "\n\n";    }}void Project::addFormFile( FormFile *ff ){    formfiles.append( ff );    modified = TRUE;    emit formFileAdded( ff );}bool Project::removeFormFile( FormFile *ff ){    if ( !formfiles.containsRef( ff ) )	return FALSE;    if ( !ff->close() )	return FALSE;    formfiles.removeRef( ff );    modified = TRUE;    emit formFileRemoved( ff );    return TRUE;}void Project::addObject( QObject *o ){    bool wasModified = modified;    objs.append( o );    FormFile *ff = new FormFile( "", FALSE, this, "qt_fakewindow" );    ff->setFileName( "__APPOBJ" + QString( o->name() ) + ".ui" );    fakeFormFiles.insert( (void*)o, ff );    MetaDataBase::addEntry( o );    if ( hasGUI() ) {	QWidget *parent = MainWindow::self ? MainWindow::self->qWorkspace() : 0;	FormWindow *fw = new FormWindow( ff, MainWindow::self, parent, "qt_fakewindow" );	fw->setProject( this );	if ( QFile::exists( ff->absFileName() ) )	    Resource::loadExtraSource( ff, ff->absFileName(),				       MetaDataBase::languageInterface( language() ), FALSE );	if ( MainWindow::self )	    fw->setMainWindow( MainWindow::self );	if ( MainWindow::self ) {	    QApplication::sendPostedEvents( MainWindow::self->qWorkspace(), QEvent::ChildInserted );	    connect( fw,		     SIGNAL( undoRedoChanged( bool, bool, const QString &, const QString & ) ),		     MainWindow::self,		     SLOT( updateUndoRedo( bool, bool, const QString &, const QString & ) )		);	}	if ( fw->parentWidget() ) {	    fw->parentWidget()->setFixedSize( 1, 1 );	    fw->show();	}    } else {	if ( QFile::exists( ff->absFileName() ) )	    Resource::loadExtraSource( ff, ff->absFileName(),				       MetaDataBase::languageInterface( language() ), FALSE );    }    emit objectAdded( o );    modified = wasModified;}void Project::setObjects( const QObjectList &ol ){    for ( QObjectListIt it( ol ); it.current(); ++it )	addObject( it.current() );}void Project::removeObject( QObject *o ){    bool wasModified = modified;    objs.removeRef( o );    MetaDataBase::removeEntry( o );    fakeFormFiles.remove( (void*)o );    emit objectRemoved( o );    modified = wasModified;}QObjectList Project::objects() const{    return objs;}FormFile *Project::fakeFormFileFor( QObject *o ) const{    return fakeFormFiles.find( (void*)o );}QObject *Project::objectForFakeForm( FormWindow *fw ) const{    for ( QPtrDictIterator<FormFile> it( fakeFormFiles ); it.current(); ++it ) {	if ( it.current()->formWindow() == fw ||	    it.current() == fw->formFile() )	    return (QObject*)it.currentKey();    }    return 0;}QObject *Project::objectForFakeFormFile( FormFile *ff ) const{    for ( QPtrDictIterator<FormFile> it( fakeFormFiles ); it.current(); ++it ) {	if ( it.current() == ff )	    return (QObject*)it.currentKey();    }    return 0;}void Project::removeTempProject(){    if ( !singleProjectMode() )	return;    QDir d( QFileInfo( filename ).dirPath() );    if ( !d.exists( QFileInfo( filename ).dirPath() ) )	return;    QStringList files = d.entryList( QDir::Files );    QStringList::Iterator it;    for ( it = files.begin(); it != files.end(); ++it ) {	d.remove( *it );    }    if ( d.exists( QFileInfo( filename ).dirPath() + "/images" ) ) {	d = QDir( QFileInfo( filename ).dirPath() + "/images" );	files = d.entryList( QDir::Files );	for ( it = files.begin(); it != files.end(); ++it )	    d.remove( *it );	d = QDir( QFileInfo( filename ).dirPath() );	d.remove( "images" );    }    d.remove( QFileInfo( filename ).dirPath() );#if defined(Q_OS_UNIX)    // ##### implement for all platforms, ideally should be in Qt    ::rmdir( d.absPath().latin1() );#endif}void Project::addAndEditFunction( const QString &function, const QString &functionBody, bool openDeveloper ){    for ( SourceFile *f = sourcefiles.first(); f; f = sourcefiles.next() ) {	if ( QFileInfo( f->fileName() ).baseName() == "main" ) {	    QValueList<LanguageInterface::Function> funcs;	    LanguageInterface *iface = MetaDataBase::languageInterface( language() );	    if ( !iface )		return;	    iface->functions( f->text(), &funcs );	    QString func = function;	    int i = func.find( '(' );	    if ( i != -1 )		func = func.left( i );	    bool found = FALSE;	    for ( QValueList<LanguageInterface::Function>::Iterator it = funcs.begin();		  it != funcs.end(); ++it ) {		if ( (*it).name.left( (*it).name.find( '(' ) ) == func ) {		    found = TRUE;		    break;		}	    }	    if ( !found ) {		QString code = f->text();		if ( functionBody.isEmpty() )		    code += "\n\n" + iface->createFunctionStart( "", func, "", "" ) + "()\n{\n\n}\n";		else		    code += "\n\n" + iface->createFunctionStart( "", func, "", "" ) +			    "()\n" + functionBody + "\n";		f->setText( code );		if ( f->editor() )		    f->editor()->refresh( FALSE );	    }	    if ( openDeveloper ) {		if ( MainWindow::self )		    MainWindow::self->editSource( f );		f->editor()->setFunction( func, "" );	    }	    break;	}    }}bool Project::hasParentObject( QObject *o ){    for ( QObject *p = objs.first(); p; p = objs.next() ) {	QObject *c = p->child( o->name(), o->className() );	if ( c )	    return TRUE;    }    return FALSE;}QString Project::qualifiedName( QObject *o ){    QString name = o->name();    QObject *p = o->parent();    while ( p ) {	name.prepend( QString( p->name() ) + "." );	if ( objs.findRef( p ) != -1 )	    break;	p = p->parent();    }    return name;}bool Project::singleProjectMode() const{    return !MainWindow::self || MainWindow::self->singleProjectMode();}QWidget *Project::messageBoxParent() const{    return MainWindow::self;}void Project::designerCreated(){    for ( FormFile *ff = formfiles.first(); ff; ff = formfiles.next() ) {	FormWindow *fw = ff->formWindow();	if ( !fw || fw->mainWindow() )	    continue;	fw->setMainWindow( MainWindow::self );	connect( fw, SIGNAL( undoRedoChanged( bool, bool, const QString &,					      const QString & ) ),		 MainWindow::self, SLOT( updateUndoRedo( bool, bool,					 const QString &, const QString & ) ) );	fw->reparent( MainWindow::self->qWorkspace(), QPoint( 0, 0 ), FALSE );	QApplication::sendPostedEvents( MainWindow::self->qWorkspace(),					QEvent::ChildInserted );	fw->parentWidget()->setFixedSize( 1, 1 );	fw->show();    }}void Project::formOpened( FormWindow *fw ){    if ( fw->isFake() )	return;    emit newFormOpened( fw );}QString Project::locationOfObject( QObject *o ){    if ( !o )	return QString::null;    if ( MainWindow::self ) {	QWidgetList windows = MainWindow::self->qWorkspace()->windowList();	for ( QWidget *w = windows.first(); w; w = windows.next() ) {	    FormWindow *fw = ::qt_cast<FormWindow*>(w);	    SourceEditor *se = ::qt_cast<SourceEditor*>(w);	    if ( fw ) {		if ( fw->isFake() )		    return objectForFakeForm( fw )->name() + QString( " [Source]" );		else		    return fw->name() + QString( " [Source]" );	    } else if ( se ) {		if ( !se->object() )		    continue;		if ( se->formWindow() )		    return se->formWindow()->name() + QString( " [Source]" );		else		    return makeRelative( se->sourceFile()->fileName() );	    }	}    }    if ( ::qt_cast<SourceFile*>(o) ) {	for ( QPtrListIterator<SourceFile> sources = sourceFiles();	      sources.current(); ++sources ) {	    SourceFile* f = sources.current();	    if ( f == o )		return makeRelative( f->fileName() );	}    }    extern QMap<QWidget*, QString> *qwf_forms;    if ( !qwf_forms ) {	qWarning( "Project::locationOfObject: qwf_forms is NULL!" );	return QString::null;    }    QString s = makeRelative( *qwf_forms->find( (QWidget*)o ) );    s += " [Source]";    return s;}bool Project::hasGUI() const{    return qApp->type() != QApplication::Tty;}

⌨️ 快捷键说明

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