本文整理汇总了C++中QMap::replace方法的典型用法代码示例。如果您正苦于以下问题:C++ QMap::replace方法的具体用法?C++ QMap::replace怎么用?C++ QMap::replace使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QMap
的用法示例。
在下文中一共展示了QMap::replace方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readPlatformSettings
void Project::readPlatformSettings( const QString &contents,
const QString &setting,
QMap<QString, QString> &res )
{
const QString platforms[] = { "", "win32", "unix", "mac", "os2", 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 );
}
}
示例2: save
//.........这里部分代码省略.........
writePlatformSettings( contents, "CONFIG", cfg );
LanguageInterface *iface = MetaDataBase::languageInterface( lang );
if ( iface ) {
QStringList sourceKeys;
iface->sourceProjectKeys( sourceKeys );
for ( QStringList::Iterator spit = sourceKeys.begin(); spit != sourceKeys.end(); ++spit )
remove_multiline_contents( contents, *spit );
}
// libs, defines, includes
writePlatformSettings( contents, "LIBS", lbs );
writePlatformSettings( contents, "DEFINES", defs );
writePlatformSettings( contents, "INCLUDEPATH", inclPath );
writePlatformSettings( contents, "SOURCES", sources );
writePlatformSettings( contents, "HEADERS", headers );
// unix
if ( !hasPreviousContents ) {
contents +=
"unix|os2 {\n"
" UI_DIR = .ui\n"
" MOC_DIR = .moc\n"
" OBJECTS_DIR = .obj\n"
"}\n\n";
}
// sources
if ( !sourcefiles.isEmpty() && iface ) {
QMap<QString, QStringList> sourceToKey;
for ( SourceFile *f = sourcefiles.first(); f; f = sourcefiles.next() ) {
QString key = iface->projectKeyForExtension( QFileInfo( f->fileName() ).extension() );
QStringList lst = sourceToKey[ key ];
lst << makeRelative( f->fileName() );
sourceToKey.replace( key, lst );
}
for ( QMap<QString, QStringList>::Iterator skit = sourceToKey.begin();
skit != sourceToKey.end(); ++skit ) {
QString part = skit.key() + "\t+= ";
QStringList lst = *skit;
for ( QStringList::Iterator sit = lst.begin(); sit != lst.end(); ++sit ) {
part += *sit;
part += ++sit != lst.end() ? " \\\n\t" : "";
--sit;
}
part += "\n\n";
contents += part;
}
}
// forms and interfaces
if ( !formfiles.isEmpty() ) {
contents += "FORMS\t= ";
for ( QPtrListIterator<FormFile> fit = formfiles; fit.current(); ++fit ) {
contents += fit.current()->fileName() +
(fit != formfiles.last() ? " \\\n\t" : "");
}
contents += "\n\n";
}
// images
if ( !pixCollection->isEmpty() ) {
contents += "IMAGES\t= ";
QValueList<PixmapCollection::Pixmap> pixmaps = pixCollection->pixmaps();
for ( QValueList<PixmapCollection::Pixmap>::Iterator it = pixmaps.begin();
it != pixmaps.end(); ++it ) {
示例3: include
QMap<QString, QString> proFileTagMap( const QString& text )
{
QString t = text;
QMap<QString, QString> tagMap;
bool stillProcess = true; // If include() has a $$tag then we need to reprocess
while(stillProcess) {
/*
Strip any commments before we try to include. We
still need to do it after we include to make sure the
included file does not have comments
*/
t.replace( QRegExp(QString("#[^\n]*\n")), QString(" ") );
/*
Process include() commands.
$$PWD is a special case so we have to change it while
we know where the included file is.
*/
QRegExp callToInclude("include\\s*\\(\\s*([^()\\s]+)\\s*\\)");
int i = 0;
while ( (i = callToInclude.search(t, i)) != -1 ) {
bool doneWithVar = false;
QString fileName = callToInclude.cap(1);
QString after = fileName.replace("$$PWD", QDir::currentDirPath());
if (!tagMap.isEmpty() && after.contains("$$")) {
QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" );
int ii = 0;
while ((ii = after.find(var, ii)) != -1) {
if (tagMap.contains(var.cap(1))) {
after.replace(ii, var.cap(0).length(), tagMap[var.cap(1)]);
} else { // Couldn't find it
doneWithVar = true;
break;
}
}
}
if (doneWithVar || !after.contains("$$")) {
after = loadFile(after);
QFileInfo fi(callToInclude.cap(1));
after.replace("$$PWD", fi.dirPath());
t.replace( i, callToInclude.matchedLength(), after );
}
i += after.length();
}
/*
Strip comments, merge lines ending with backslash, add
spaces around '=' and '+=', replace '\n' with ';', and
simplify white spaces.
*/
t.replace( QRegExp(QString("#[^\n]*\n")), QString(" ") );
t.replace( QRegExp(QString("\\\\[^\n\\S]*\n")), QString(" ") );
t.replace( "=", QString(" = ") );
t.replace( "+ =", QString(" += ") );
t.replace( "\n", QString(";") );
t = t.simplifyWhiteSpace();
/*
Populate tagMap with 'key = value' entries.
*/
QStringList lines = QStringList::split( QChar(';'), t );
QStringList::Iterator line;
for ( line = lines.begin(); line != lines.end(); ++line ) {
QStringList toks = QStringList::split( QChar(' '), *line );
if ( toks.count() >= 3 &&
(toks[1] == QString("=") || toks[1] == QString("+=")) ) {
QString tag = toks.first();
int k = tag.findRev( QChar(':') ); // as in 'unix:'
if ( k != -1 )
tag = tag.mid( k + 1 );
toks.remove( toks.begin() );
QString action = toks.first();
toks.remove( toks.begin() );
if ( tagMap.contains(tag) ) {
if ( action == QString("=") )
tagMap.replace( tag, toks.join(QChar(' ')) );
else
tagMap[tag] += QChar( ' ' ) + toks.join( QChar(' ') );
} else {
tagMap[tag] = toks.join( QChar(' ') );
}
}
}
/*
Expand $$variables within the 'value' part of a 'key = value'
pair.
*/
QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" );
QMap<QString, QString>::Iterator it;
for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
int i = 0;
while ( (i = var.search((*it), i)) != -1 ) {
int len = var.matchedLength();
//.........这里部分代码省略.........