本文整理汇总了C++中QList::constBegin方法的典型用法代码示例。如果您正苦于以下问题:C++ QList::constBegin方法的具体用法?C++ QList::constBegin怎么用?C++ QList::constBegin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QList
的用法示例。
在下文中一共展示了QList::constBegin方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkDuplicates
ErrorList topolTest::checkDuplicates( QgsVectorLayer *layer1, QgsVectorLayer *layer2, bool isExtent )
{
Q_UNUSED( layer2 );
//TODO: multilines - check all separate pieces
int i = 0;
ErrorList errorList;
QList<QgsFeatureId> duplicateIds;
QgsSpatialIndex *index = mLayerIndexes[layer1->id()];
QgsGeometry canvasExtentPoly = QgsGeometry::fromWkt( qgsInterface->mapCanvas()->extent().asWktPolygon() );
QMap<QgsFeatureId, FeatureLayer>::const_iterator it;
for ( it = mFeatureMap2.constBegin(); it != mFeatureMap2.constEnd(); ++it )
{
if ( !( ++i % 100 ) )
emit progress( i );
QgsFeatureId currentId = it->feature.id();
if ( duplicateIds.contains( currentId ) )
{
//is already a duplicate geometry..skip..
continue;
}
if ( testCanceled() )
break;
QgsGeometry g1 = it->feature.geometry();
QgsRectangle bb = g1.boundingBox();
QList<QgsFeatureId> crossingIds;
crossingIds = index->intersects( bb );
QList<QgsFeatureId>::ConstIterator cit = crossingIds.constBegin();
QList<QgsFeatureId>::ConstIterator crossingIdsEnd = crossingIds.constEnd();
bool duplicate = false;
for ( ; cit != crossingIdsEnd; ++cit )
{
duplicate = false;
// skip itself
if ( mFeatureMap2[*cit].feature.id() == it->feature.id() )
continue;
QgsGeometry g2 = mFeatureMap2[*cit].feature.geometry();
if ( g2.isNull() )
{
QgsMessageLog::logMessage( tr( "Invalid second geometry in duplicate geometry test." ), tr( "Topology plugin" ) );
continue;
}
if ( !_canExportToGeos( g2 ) )
{
QgsMessageLog::logMessage( tr( "Failed to import second geometry into GEOS in duplicate geometry test." ), tr( "Topology plugin" ) );
continue;
}
if ( g1.isGeosEqual( g2 ) )
{
duplicate = true;
duplicateIds.append( mFeatureMap2[*cit].feature.id() );
}
if ( duplicate )
{
QList<FeatureLayer> fls;
fls << *it << *it;
QgsGeometry conflict( g1 );
if ( isExtent )
{
if ( canvasExtentPoly.disjoint( conflict ) )
{
continue;
}
if ( canvasExtentPoly.crosses( conflict ) )
{
conflict = conflict.intersection( canvasExtentPoly );
}
}
TopolErrorDuplicates *err = new TopolErrorDuplicates( bb, conflict, fls );
errorList << err;
}
}
}
return errorList;
}
示例2: styleSheet
//.........这里部分代码省略.........
m_actions[Redo]->setText(i18n("Redo"));
m_actions[Redo]->setShortcuts(KStandardShortcut::redo());
connect(m_actions[Redo], SIGNAL(triggered()), this, SLOT(redo()));
m_actions[Cut] = new QAction(this);
m_actions[Cut]->setIcon(QIcon::fromTheme("edit-cut"));
m_actions[Cut]->setText(i18n("Cut"));
m_actions[Cut]->setShortcuts(KStandardShortcut::cut());
connect(m_actions[Cut], SIGNAL(triggered()), this, SLOT(cut()));
m_actions[Copy] = new QAction(this);
m_actions[Copy]->setIcon(QIcon::fromTheme("edit-copy"));
m_actions[Copy]->setText(i18n("Copy"));
m_actions[Copy]->setShortcuts(KStandardShortcut::copy());
connect(m_actions[Copy], SIGNAL(triggered()), this, SLOT(copy()));
#if !defined(QT_NO_CLIPBOARD)
m_actions[Paste] = new QAction(this);
m_actions[Paste]->setIcon(QIcon::fromTheme("edit-paste"));
m_actions[Paste]->setText(i18n("Paste"));
m_actions[Paste]->setShortcuts(KStandardShortcut::paste());
connect(m_actions[Paste], SIGNAL(triggered()), this, SLOT(paste()));
#endif
m_actions[Delete] = new QAction(this);
m_actions[Delete]->setIcon(QIcon::fromTheme("edit-delete"));
m_actions[Delete]->setText(i18n("Delete"));
m_actions[Delete]->setShortcut(QKeySequence::Delete);
connect(m_actions[Delete], SIGNAL(triggered()), this, SLOT(deleteText()));
m_actions[Clear] = new QAction(this);
m_actions[Clear]->setIcon(QIcon::fromTheme("edit-clear"));
m_actions[Clear]->setText(i18nc("@action:inmenu Clear all text", "Clear"));
connect(m_actions[Clear], SIGNAL(triggered()), this, SLOT(undoableClear()));
m_actions[SelectAll] = new QAction(this);
m_actions[SelectAll]->setIcon(QIcon::fromTheme("edit-select-all"));
m_actions[SelectAll]->setText(i18n("Select All"));
m_actions[SelectAll]->setShortcut(QKeySequence::SelectAll);
connect(m_actions[SelectAll], SIGNAL(triggered()), this, SLOT(selectAll()));
m_actions[ToggleBold] = new QAction(this);
m_actions[ToggleBold]->setIcon(QIcon::fromTheme("format-text-bold"));
m_actions[ToggleBold]->setText(i18nc("@action:inmenu Toggle bold style", "Bold"));
m_actions[ToggleBold]->setShortcut(QKeySequence("Ctrl+B"));
connect(m_actions[ToggleBold], SIGNAL(triggered()), this, SLOT(toggleFontBold()));
m_actions[ToggleItalic] = new QAction(this);
m_actions[ToggleItalic]->setIcon(QIcon::fromTheme("format-text-italic"));
m_actions[ToggleItalic]->setText(i18nc("@action:inmenu Toggle italic style", "Italic"));
m_actions[ToggleItalic]->setShortcut(QKeySequence("Ctrl+I"));
connect(m_actions[ToggleItalic], SIGNAL(triggered()), this, SLOT(toggleFontItalic()));
m_actions[ToggleUnderline] = new QAction(this);
m_actions[ToggleUnderline]->setIcon(QIcon::fromTheme("format-text-underline"));
m_actions[ToggleUnderline]->setText(i18nc("@action:inmenu Toggle underline style", "Underline"));
m_actions[ToggleUnderline]->setShortcut(QKeySequence("Ctrl+U"));
connect(m_actions[ToggleUnderline], SIGNAL(triggered()), this, SLOT(toggleFontUnderline()));
m_actions[ToggleStrikeOut] = new QAction(this);
m_actions[ToggleStrikeOut]->setIcon(QIcon::fromTheme("format-text-strikethrough"));
m_actions[ToggleStrikeOut]->setText(i18nc("@action:inmenu Toggle strike through style", "Strike Through"));
m_actions[ToggleStrikeOut]->setShortcut(QKeySequence("Ctrl+T"));
connect(m_actions[ToggleStrikeOut], SIGNAL(triggered()), this, SLOT(toggleFontStrikeOut()));
m_actions[ChangeTextColor] = new QAction(this);
m_actions[ChangeTextColor]->setIcon(QIcon::fromTheme("format-text-color"));
m_actions[ChangeTextColor]->setText(i18nc("@action:inmenu Change Text Color", "Text Color"));
m_actions[ChangeTextColor]->setShortcut(QKeySequence("Ctrl+Shift+C"));
connect(m_actions[ChangeTextColor], SIGNAL(triggered()), this, SLOT(changeTextColor()));
m_actions[CheckSpelling] = new QAction(this);
m_actions[CheckSpelling]->setIcon(QIcon::fromTheme("tools-check-spelling"));
m_actions[CheckSpelling]->setText(i18n("Check Spelling..."));
connect(m_actions[CheckSpelling], SIGNAL(triggered()), this, SLOT(checkSpelling()));
m_actions[ToggleAutoSpellChecking] = new QAction(this);
m_actions[ToggleAutoSpellChecking]->setText(i18n("Auto Spell Check"));
m_actions[ToggleAutoSpellChecking]->setCheckable(true);
connect(m_actions[ToggleAutoSpellChecking], SIGNAL(triggered()), this, SLOT(toggleAutoSpellChecking()));
m_actions[AllowTabulations] = new QAction(this);
m_actions[AllowTabulations]->setText(i18n("Allow Tabulations"));
connect(m_actions[AllowTabulations], SIGNAL(triggered()), this, SLOT(toggleTabChangesFocus()));
QMenu *menu = createStandardContextMenu();
menu->setParent(this);
QList<QAction *> actions = menu->actions();
m_insertUnicodeControlCharMenu = 0;
for(QList<QAction *>::ConstIterator it = actions.constBegin(), end = actions.constEnd(); it != end; ++it) {
if((*it)->menu()) {
// this depends on Qt private implementation but at least is guaranteed
// to behave reasonably if that implementation changes in the future.
if(!strcmp((*it)->menu()->metaObject()->className(), "QUnicodeControlCharacterMenu")) {
m_insertUnicodeControlCharMenu = (*it)->menu();
break;
}
}
}
}
示例3: setCookiesFromUrl
bool NetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
{
#if defined(NETWORKCOOKIEJAR_DEBUG)
qDebug() << "NetworkCookieJar::" << __FUNCTION__ << url;
qDebug() << cookieList;
#endif
QDateTime now = QDateTime::currentDateTime().toTimeSpec(Qt::UTC);
bool changed = false;
QString fullUrlPath = url.path();
QString defaultPath = fullUrlPath.mid(0, fullUrlPath.lastIndexOf(QLatin1Char('/')) + 1);
if (defaultPath.isEmpty())
defaultPath = QLatin1Char('/');
QString urlPath = d->urlPath(url);
foreach (QNetworkCookie cookie, cookieList) {
if (cookie.path().length() > maxCookiePathLength)
continue;
bool alreadyDead = !cookie.isSessionCookie() && cookie.expirationDate() < now;
if (cookie.path().isEmpty()) {
cookie.setPath(defaultPath);
}
// Matching the behavior of Firefox, no path checking is done when setting cookies
// Safari does something even odder, when that paths don't match it keeps
// the cookie, but changes the paths to the default path
#if 0
else if (!d->matchingPath(cookie, urlPath)) {
#ifdef NETWORKCOOKIEJAR_LOGREJECTEDCOOKIES
qDebug() << "NetworkCookieJar::" << __FUNCTION__
<< "Blocked cookie because: path doesn't match: " << cookie << url;
#endif
continue;
}
#endif
if (cookie.domain().isEmpty()) {
QString host = url.host().toLower();
if (host.isEmpty())
continue;
cookie.setDomain(host);
} else if (!d->matchingDomain(cookie, url)) {
#ifdef NETWORKCOOKIEJAR_LOGREJECTEDCOOKIES
qDebug() << "NetworkCookieJar::" << __FUNCTION__
<< "Blocked cookie because: domain doesn't match: " << cookie << url;
#endif
continue;
}
// replace/remove existing cookies
QString domain = cookie.domain();
Q_ASSERT(!domain.isEmpty());
QStringList urlHost = splitHost(domain);
QList<QNetworkCookie> cookies = d->tree.find(urlHost);
QList<QNetworkCookie>::const_iterator it = cookies.constBegin();
for (; it != cookies.constEnd(); ++it) {
if (cookie.name() == it->name() &&
cookie.domain() == it->domain() &&
cookie.path() == it->path()) {
d->tree.remove(urlHost, *it);
break;
}
}
if (alreadyDead)
continue;
changed = true;
d->tree.insert(urlHost, cookie);
}
return changed;
}
示例4: fill
void ICQFullInfo::fill( Buffer* buffer )
{
Buffer tlvListBuffer( buffer->getBSTR() );
QList<TLV> tlvList = tlvListBuffer.getTLVList();
QList<TLV>::const_iterator it;
for ( it = tlvList.constBegin(); it != tlvList.constEnd(); ++it )
{
switch ( (*it).type )
{
case 0x0032:
uin = (*it).data;
break;
case 0x0046:
break;
case 0x0050:
break;
case 0x0055:
break;
case 0x0064:
firstName = (*it).data;
break;
case 0x006e:
lastName = (*it).data;
break;
case 0x0078:
nickName = (*it).data;
break;
case 0x0082:
{
Buffer b( (*it).data );
gender = b.getByte();
}
break;
case 0x008c:
break;
case 0x0096:
homeList = parseAddressItemList( (*it).data );
break;
case 0x00A0:
originList = parseAddressItemList( (*it).data );
break;
case 0x00AA:
{
Buffer b( (*it).data );
language1 = b.getWord();
}
break;
case 0x00B4:
{
Buffer b( (*it).data );
language2 = b.getWord();
}
break;
case 0x00BE:
{
Buffer b( (*it).data );
language3 = b.getWord();
}
break;
case 0x00C8:
phoneList = parseInfoItemList( (*it).data );
break;
case 0x00FA:
homepage = (*it).data;
break;
case 0x0104:
break;
case 0x010e:
break;
case 0x0118:
workList = parseWorkItemList( (*it).data );
break;
case 0x0122:
interestList = parseInfoItemList( (*it).data );
break;
case 0x0123:
organizationList = parseInfoItemList( (*it).data );
break;
case 0x0124:
pastAffliationList = parseInfoItemList( (*it).data );
break;
case 0x012C:
break;
case 0x0136:
break;
case 0x0140:
break;
case 0x014A:
break;
case 0x0154:
break;
case 0x015E:
break;
case 0x0168:
break;
case 0x0172:
break;
case 0x017C:
timezone = Buffer( (*it).data ).getWord();
//.........这里部分代码省略.........
示例5: createOffsetGeometry
QgsGeometry QgsGeometryAnalyzer::createOffsetGeometry( const QgsGeometry& geom, const QgsGeometry& lineGeom, double offset )
{
if ( !geom || lineGeom.isEmpty() )
{
return QgsGeometry();
}
QList<QgsGeometry> inputGeomList;
if ( geom.isMultipart() )
{
inputGeomList = geom.asGeometryCollection();
}
else
{
inputGeomList.push_back( geom );
}
QList<GEOSGeometry*> outputGeomList;
QList<QgsGeometry>::const_iterator inputGeomIt = inputGeomList.constBegin();
GEOSContextHandle_t geosctxt = QgsGeometry::getGEOSHandler();
for ( ; inputGeomIt != inputGeomList.constEnd(); ++inputGeomIt )
{
if ( geom.type() == QgsWkbTypes::LineGeometry )
{
GEOSGeometry* offsetGeom = GEOSOffsetCurve_r( geosctxt, ( *inputGeomIt ).asGeos(), -offset, 8 /*quadSegments*/, 0 /*joinStyle*/, 5.0 /*mitreLimit*/ );
if ( !offsetGeom || !GEOSisValid_r( geosctxt, offsetGeom ) )
{
return QgsGeometry();
}
if ( !GEOSisValid_r( geosctxt, offsetGeom ) || GEOSGeomTypeId_r( geosctxt, offsetGeom ) != GEOS_LINESTRING || GEOSGeomGetNumPoints_r( geosctxt, offsetGeom ) < 1 )
{
GEOSGeom_destroy_r( geosctxt, offsetGeom );
return QgsGeometry();
}
outputGeomList.push_back( offsetGeom );
}
else if ( geom.type() == QgsWkbTypes::PointGeometry )
{
QgsPoint p = ( *inputGeomIt ).asPoint();
p = createPointOffset( p.x(), p.y(), offset, lineGeom );
GEOSCoordSequence* ptSeq = GEOSCoordSeq_create_r( geosctxt, 1, 2 );
GEOSCoordSeq_setX_r( geosctxt, ptSeq, 0, p.x() );
GEOSCoordSeq_setY_r( geosctxt, ptSeq, 0, p.y() );
GEOSGeometry* geosPt = GEOSGeom_createPoint_r( geosctxt, ptSeq );
outputGeomList.push_back( geosPt );
}
}
QgsGeometry outGeometry;
if ( !geom.isMultipart() )
{
GEOSGeometry* outputGeom = outputGeomList.at( 0 );
if ( outputGeom )
{
outGeometry.fromGeos( outputGeom );
}
}
else
{
GEOSGeometry** geomArray = new GEOSGeometry*[outputGeomList.size()];
for ( int i = 0; i < outputGeomList.size(); ++i )
{
geomArray[i] = outputGeomList.at( i );
}
GEOSGeometry* collection = nullptr;
if ( geom.type() == QgsWkbTypes::PointGeometry )
{
collection = GEOSGeom_createCollection_r( geosctxt, GEOS_MULTIPOINT, geomArray, outputGeomList.size() );
}
else if ( geom.type() == QgsWkbTypes::LineGeometry )
{
collection = GEOSGeom_createCollection_r( geosctxt, GEOS_MULTILINESTRING, geomArray, outputGeomList.size() );
}
outGeometry.fromGeos( collection );
delete[] geomArray;
}
return outGeometry;
}
示例6: slotLoadEventsResult
void KCalResourceSlox::slotLoadEventsResult( KJob *job )
{
kDebug() << long( this );
if ( job->error() ) {
loadError( job->errorString() );
} else {
kDebug() << "success";
QDomDocument doc = mLoadEventsJob->response();
mWebdavHandler.log( doc.toString( 2 ) );
QList<SloxItem> items = WebdavHandler::getSloxItems( this, doc );
bool changed = false;
disableChangeNotification();
QList<SloxItem>::ConstIterator it;
for( it = items.constBegin(); it != items.constEnd(); ++it ) {
SloxItem item = *it;
QString uid = sloxIdToEventUid( item.sloxId );
if ( item.status == SloxItem::Delete ) {
Event *event = calendar()->event( uid );
if ( event ) {
calendar()->deleteEvent( event );
changed = true;
}
} else if ( item.status == SloxItem::Create ) {
Event *newEvent = 0;
Event *event = calendar()->event( uid );
if ( !event ) {
newEvent = new Event;
event = newEvent;
event->setUid( uid );
event->setSecrecy( Incidence::SecrecyPrivate );
}
event->setCustomProperty( "SLOX", "ID", item.sloxId );
QDomNode n = item.domNode.namedItem( fieldName( FullTime ) );
event->setAllDay( n.toElement().text() == boolToStr( true ) );
bool doesRecur = false;
mWebdavHandler.clearSloxAttributeStatus();
for( n = item.domNode.firstChild(); !n.isNull(); n = n.nextSibling() ) {
QDomElement e = n.toElement();
mWebdavHandler.parseSloxAttribute( e );
parseIncidenceAttribute( e, event );
parseEventAttribute( e, event );
if ( e.tagName() == fieldName( RecurrenceType ) && e.text() != "no" ) {
doesRecur = true;
}
}
if ( doesRecur )
parseRecurrence( item.domNode, event );
else
event->recurrence()->unsetRecurs();
mWebdavHandler.setSloxAttributes( event );
// kDebug() << "EVENT" << item.uid << event->summary();
if ( newEvent ) calendar()->addEvent( event );
changed = true;
}
}
enableChangeNotification();
saveToCache();
clearChanges();
if ( changed ) emit resourceChanged( this );
emit resourceLoaded( this );
}
mLoadEventsJob = 0;
if ( mLoadEventsProgress ) mLoadEventsProgress->setComplete();
mLoadEventsProgress = 0;
}
示例7: drawGroup
void QgsPointDisplacementRenderer::drawGroup( const DisplacementGroup& group, QgsRenderContext& context )
{
const QgsFeature& feature = group.begin().value().first;
bool selected = mSelectedFeatures.contains( feature.id() ); // maybe we should highlight individual features instead of the whole group?
QPointF pt;
_getPoint( pt, context, feature.constGeometry()->asWkb() );
//get list of labels and symbols
QStringList labelAttributeList;
QList<QgsMarkerSymbolV2*> symbolList;
for ( DisplacementGroup::const_iterator attIt = group.constBegin(); attIt != group.constEnd(); ++attIt )
{
labelAttributeList << ( mDrawLabels ? getLabel( attIt.value().first ) : QString() );
symbolList << dynamic_cast<QgsMarkerSymbolV2*>( attIt.value().second );
}
//draw symbol
double diagonal = 0;
double currentWidthFactor; //scale symbol size to map unit and output resolution
QList<QgsMarkerSymbolV2*>::const_iterator it = symbolList.constBegin();
for ( ; it != symbolList.constEnd(); ++it )
{
if ( *it )
{
currentWidthFactor = QgsSymbolLayerV2Utils::lineWidthScaleFactor( context, ( *it )->outputUnit(), ( *it )->mapUnitScale() );
double currentDiagonal = sqrt( 2 * (( *it )->size() * ( *it )->size() ) ) * currentWidthFactor;
if ( currentDiagonal > diagonal )
{
diagonal = currentDiagonal;
}
}
}
QgsSymbolV2RenderContext symbolContext( context, QgsSymbolV2::MM, 1.0, selected );
double circleAdditionPainterUnits = symbolContext.outputLineWidth( mCircleRadiusAddition );
double radius = qMax(( diagonal / 2 ), labelAttributeList.size() * diagonal / 2 / M_PI ) + circleAdditionPainterUnits;
//draw Circle
drawCircle( radius, symbolContext, pt, symbolList.size() );
QList<QPointF> symbolPositions;
QList<QPointF> labelPositions;
calculateSymbolAndLabelPositions( pt, labelAttributeList.size(), radius, diagonal, symbolPositions, labelPositions );
//draw mid point
if ( labelAttributeList.size() > 1 )
{
if ( mCenterSymbol )
{
mCenterSymbol->renderPoint( pt, &feature, context, -1, selected );
}
else
{
context.painter()->drawRect( QRectF( pt.x() - symbolContext.outputLineWidth( 1 ), pt.y() - symbolContext.outputLineWidth( 1 ), symbolContext.outputLineWidth( 2 ), symbolContext.outputLineWidth( 2 ) ) );
}
}
//draw symbols on the circle
drawSymbols( feature, context, symbolList, symbolPositions, selected );
//and also the labels
drawLabels( pt, symbolContext, labelPositions, labelAttributeList );
}
示例8: defaultRendererForDrawingStyle
QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( QgsRaster::DrawingStyle theDrawingStyle, QgsRasterDataProvider* provider ) const
{
if ( !provider || provider->bandCount() < 1 )
{
return nullptr;
}
QgsRasterRenderer* renderer = nullptr;
switch ( theDrawingStyle )
{
case QgsRaster::PalettedColor:
{
int grayBand = 1; //reasonable default
QList<QgsColorRampShader::ColorRampItem> colorEntries = provider->colorTable( grayBand );
//go through list and take maximum value (it could be that entries don't start at 0 or indices are not contiguous)
int colorArraySize = 0;
QList<QgsColorRampShader::ColorRampItem>::const_iterator colorIt = colorEntries.constBegin();
for ( ; colorIt != colorEntries.constEnd(); ++colorIt )
{
if ( colorIt->value > colorArraySize )
{
colorArraySize = ( int )( colorIt->value );
}
}
colorArraySize += 1; //usually starts at 0
QColor* colorArray = new QColor[ colorArraySize ];
colorIt = colorEntries.constBegin();
QVector<QString> labels;
for ( ; colorIt != colorEntries.constEnd(); ++colorIt )
{
int idx = ( int )( colorIt->value );
colorArray[idx] = colorIt->color;
if ( !colorIt->label.isEmpty() )
{
if ( labels.size() <= idx ) labels.resize( idx + 1 );
labels[idx] = colorIt->label;
}
}
renderer = new QgsPalettedRasterRenderer( provider,
grayBand,
colorArray,
colorArraySize,
labels );
}
break;
case QgsRaster::MultiBandSingleBandGray:
case QgsRaster::SingleBandGray:
{
int grayBand = 1;
renderer = new QgsSingleBandGrayRenderer( provider, grayBand );
QgsContrastEnhancement* ce = new QgsContrastEnhancement(( QGis::DataType )(
provider->dataType( grayBand ) ) );
// Default contrast enhancement is set from QgsRasterLayer, it has already setContrastEnhancementAlgorithm(). Default enhancement must only be set if default style was not loaded (to avoid stats calculation).
(( QgsSingleBandGrayRenderer* )renderer )->setContrastEnhancement( ce );
break;
}
case QgsRaster::SingleBandPseudoColor:
{
int bandNo = 1;
double minValue = 0;
double maxValue = 0;
// TODO: avoid calculating statistics if not necessary (default style loaded)
minMaxValuesForBand( bandNo, provider, minValue, maxValue );
QgsRasterShader* shader = new QgsRasterShader( minValue, maxValue );
renderer = new QgsSingleBandPseudoColorRenderer( provider, bandNo, shader );
break;
}
case QgsRaster::MultiBandColor:
{
QSettings s;
int redBand = s.value( "/Raster/defaultRedBand", 1 ).toInt();
if ( redBand < 0 || redBand > provider->bandCount() )
{
redBand = -1;
}
int greenBand = s.value( "/Raster/defaultGreenBand", 2 ).toInt();
if ( greenBand < 0 || greenBand > provider->bandCount() )
{
greenBand = -1;
}
int blueBand = s.value( "/Raster/defaultBlueBand", 3 ).toInt();
if ( blueBand < 0 || blueBand > provider->bandCount() )
{
blueBand = -1;
}
renderer = new QgsMultiBandColorRenderer( provider, redBand, greenBand, blueBand );
break;
}
case QgsRaster::SingleBandColorDataStyle:
{
renderer = new QgsSingleBandColorDataRenderer( provider, 1 );
break;
//.........这里部分代码省略.........
示例9: createDiagram
QImage* QgsPieDiagramFactory::createDiagram( int size, const QgsFeature& f, const QgsRenderContext& renderContext ) const
{
QgsAttributeMap dataValues = f.attributeMap();
double sizeScaleFactor = diagramSizeScaleFactor( renderContext );
//create transparent QImage
int imageSideLength = size * sizeScaleFactor * renderContext.rasterScaleFactor() + 2 * mMaximumPenWidth + 2 * mMaximumGap;
QImage* diagramImage = new QImage( QSize( imageSideLength, imageSideLength ), QImage::Format_ARGB32_Premultiplied );
diagramImage->fill( qRgba( 0, 0, 0, 0 ) ); //transparent background
QPainter p;
p.begin( diagramImage );
p.setRenderHint( QPainter::Antialiasing );
p.setPen( Qt::NoPen );
//calculate sum of data values
double sum = 0;
QList<double> valueList; //cash the values to use them in drawing later
QgsAttributeMap::const_iterator value_it;
QList<QgsDiagramCategory>::const_iterator it = mCategories.constBegin();
for ( ; it != mCategories.constEnd(); ++it )
{
value_it = dataValues.find( it->propertyIndex() );
valueList.push_back( value_it->toDouble() );
if ( value_it != dataValues.constEnd() )
{
sum += value_it->toDouble();
}
}
if ( doubleNear( sum, 0.0 ) )
{
p.end();
delete diagramImage;
return 0;
}
//draw pies
int totalAngle = 0;
int currentAngle, currentGap;
int xGapOffset = 0;
int yGapOffset = 0;
QList<QgsDiagramCategory>::const_iterator category_it = mCategories.constBegin();
QList<double>::const_iterator valueList_it = valueList.constBegin();
for ( ; category_it != mCategories.constEnd() && valueList_it != valueList.constEnd(); ++category_it, ++valueList_it )
{
p.setPen( category_it->pen() );
currentAngle = ( int )(( *valueList_it ) / sum * 360 * 16 );
p.setBrush( category_it->brush() );
xGapOffset = 0;
yGapOffset = 0;
currentGap = category_it->gap();
if ( currentGap != 0 )
{
//qt angles are degrees*16
gapOffsetsForPieSlice( currentGap, totalAngle + currentAngle / 2, xGapOffset, yGapOffset );
}
p.drawPie( mMaximumPenWidth * renderContext.rasterScaleFactor() + mMaximumGap + xGapOffset, mMaximumPenWidth * renderContext.rasterScaleFactor() + mMaximumGap - yGapOffset, sizeScaleFactor * renderContext.rasterScaleFactor() * size, sizeScaleFactor * renderContext.rasterScaleFactor() * size, totalAngle, currentAngle );
totalAngle += currentAngle;
}
p.end();
return diagramImage;
}
示例10: qt_mac_get_save_file_name
QString qt_mac_get_save_file_name(const QFileDialogArgs &args, QString *pwd,
QString *selectedFilter)
{
QWidget *parent = args.parent;
OSErr err;
QString retstr;
NavDialogCreationOptions options;
NavGetDefaultDialogCreationOptions(&options);
static const int w = 450, h = 350;
if (args.options & QFileDialog::DontConfirmOverwrite)
options.optionFlags |= kNavDontConfirmReplacement;
options.modality = kWindowModalityAppModal;
options.location.h = options.location.v = -1;
if (!args.directory.isEmpty())
options.saveFileName = QCFString::toCFStringRef(args.selection);
if (!args.caption.isEmpty())
options.windowTitle = QCFString::toCFStringRef(args.caption);
if (parent && parent->isVisible()) {
WindowClass wclass;
GetWindowClass(qt_mac_window_for(parent), &wclass);
if (!(args.options & QFileDialog::DontUseSheet) && (wclass == kDocumentWindowClass ||
wclass == kFloatingWindowClass || wclass == kMovableModalWindowClass)) {
options.modality = kWindowModalityWindowModal;
options.parentWindow = qt_mac_window_for(parent);
// The parent needs to be active for the sheet to get keyboard focus.
if (!parent->isActiveWindow())
parent->activateWindow();
} else {
parent = parent->window();
QString s = parent->windowTitle();
options.clientName = CFStringCreateWithCharacters(0, (UniChar *)s.unicode(), s.length());
options.location.h = (parent->x() + (parent->width() / 2)) - (w / 2);
options.location.v = (parent->y() + (parent->height() / 2)) - (h / 2);
QRect r = QApplication::desktop()->screenGeometry(
QApplication::desktop()->screenNumber(parent));
if (options.location.h + w > r.right())
options.location.h -= (options.location.h + w) - r.right() + 10;
if (options.location.v + h > r.bottom())
options.location.v -= (options.location.v + h) - r.bottom() + 10;
}
#if 0
} else if (QWidget *p = qApp->mainWidget()) {
static int last_screen = -1;
int scr = QApplication::desktop()->screenNumber(p);
if (last_screen != scr) {
QRect r = QApplication::desktop()->screenGeometry(scr);
options.location.h = (r.x() + (r.width() / 2)) - (w / 2);
options.location.v = (r.y() + (r.height() / 2)) - (h / 2);
}
#endif
}
QList<qt_mac_filter_name*> filts = qt_mac_make_filters_list(args.filter);
qt_mac_nav_filter_type t;
t.saveDialog = true;
t.index = 0;
t.filts = &filts;
if (filts.count() > 1) {
int i = 0;
CFStringRef *arr = static_cast<CFStringRef *>(malloc(sizeof(CFStringRef) * filts.count()));
for (QList<qt_mac_filter_name*>::const_iterator it = filts.constBegin();
it != filts.constEnd(); ++it)
arr[i++] = QCFString::toCFStringRef((*it)->description);
options.popupExtension = CFArrayCreate(0, reinterpret_cast<const void **>(arr), filts.count(), 0);
}
NavDialogRef dlg;
if (NavCreatePutFileDialog(&options, 'cute', kNavGenericSignature, make_navProcUPP(),
static_cast<void *>(filts.isEmpty() ? 0 : &t), &dlg)) {
qDebug("Shouldn't happen %s:%d", __FILE__, __LINE__);
return retstr;
}
if (pwd && !pwd->isEmpty()) {
FSRef fsref;
if (qt_mac_create_fsref(*pwd, &fsref) == noErr) {
AEDesc desc;
if (AECreateDesc(typeFSRef, &fsref, sizeof(FSRef), &desc) == noErr)
NavCustomControl(dlg, kNavCtlSetLocation, (void*)&desc);
}
}
NavDialogRun(dlg);
if (selectedFilter) {
NavMenuItemSpec navSpec;
bzero(&navSpec, sizeof(NavMenuItemSpec));
qt_mac_filter_name *sel_filt_name = qt_mac_make_filters_list(*selectedFilter).at(0);
for (int i = 0; i < filts.count(); ++i) {
const qt_mac_filter_name *filter = filts.at(i);
if (sel_filt_name->description == filter->description
&& sel_filt_name->regxp == filter->regxp
&& sel_filt_name->filter == filter->filter) {
navSpec.menuType = i;
break;
}
}
NavCustomControl(dlg, kNavCtlSelectCustomType, &navSpec);
}
if (options.modality == kWindowModalityWindowModal) { //simulate modality
QWidget modal_widg(parent, Qt::Sheet);
//.........这里部分代码省略.........
示例11: renderDiagram
void QgsHistogramDiagram::renderDiagram( const QgsFeature& feature, QgsRenderContext& c, const QgsDiagramSettings& s, QPointF position )
{
QPainter* p = c.painter();
if ( !p )
{
return;
}
QList<double> values;
double maxValue = 0;
QgsExpressionContext expressionContext = c.expressionContext();
expressionContext.setFeature( feature );
if ( feature.fields() )
expressionContext.setFields( *feature.fields() );
Q_FOREACH ( const QString& cat, s.categoryAttributes )
{
QgsExpression* expression = getExpression( cat, expressionContext );
double currentVal = expression->evaluate( &expressionContext ).toDouble();
values.push_back( currentVal );
maxValue = qMax( currentVal, maxValue );
}
double scaledMaxVal = sizePainterUnits( maxValue * mScaleFactor, s, c );
double currentOffset = 0;
double scaledWidth = sizePainterUnits( s.barWidth, s, c );
double baseX = position.x();
double baseY = position.y();
mPen.setColor( s.penColor );
setPenWidth( mPen, s, c );
p->setPen( mPen );
QList<double>::const_iterator valIt = values.constBegin();
QList< QColor >::const_iterator colIt = s.categoryColors.constBegin();
for ( ; valIt != values.constEnd(); ++valIt, ++colIt )
{
double length = sizePainterUnits( *valIt * mScaleFactor, s, c );
mCategoryBrush.setColor( *colIt );
p->setBrush( mCategoryBrush );
switch ( s.diagramOrientation )
{
case QgsDiagramSettings::Up:
p->drawRect( baseX + currentOffset, baseY, scaledWidth, length * -1 );
break;
case QgsDiagramSettings::Down:
p->drawRect( baseX + currentOffset, baseY - scaledMaxVal, scaledWidth, length );
break;
case QgsDiagramSettings::Right:
p->drawRect( baseX, baseY - currentOffset, length, scaledWidth * -1 );
break;
case QgsDiagramSettings::Left:
p->drawRect( baseX + scaledMaxVal, baseY - currentOffset, 0 - length, scaledWidth * -1 );
break;
}
currentOffset += scaledWidth;
}
}
示例12: qt_mac_get_open_file_names
QStringList qt_mac_get_open_file_names(const QFileDialogArgs &args, QString *pwd,
QString *selectedFilter)
{
QWidget *parent = args.parent;
OSErr err;
QStringList retstrl;
NavDialogCreationOptions options;
NavGetDefaultDialogCreationOptions(&options);
options.modality = kWindowModalityAppModal;
options.optionFlags |= kNavSupportPackages;
if (args.options & QFileDialog::DontConfirmOverwrite)
options.optionFlags |= kNavDontConfirmReplacement;
if (args.mode != QFileDialog::ExistingFiles)
options.optionFlags &= ~kNavAllowMultipleFiles;
if (!args.caption.isEmpty())
options.windowTitle = QCFString::toCFStringRef(args.caption);
static const int w = 450, h = 350;
options.location.h = options.location.v = -1;
if (parent && parent->isVisible()) {
WindowClass wclass;
GetWindowClass(qt_mac_window_for(parent), &wclass);
if (!(args.options & QFileDialog::DontUseSheet) && (wclass == kDocumentWindowClass ||
wclass == kFloatingWindowClass || wclass == kMovableModalWindowClass)) {
options.modality = kWindowModalityWindowModal;
options.parentWindow = qt_mac_window_for(parent);
} else {
parent = parent->window();
QString s = parent->windowTitle();
options.clientName = QCFString::toCFStringRef(s);
options.location.h = (parent->x() + (parent->width() / 2)) - (w / 2);
options.location.v = (parent->y() + (parent->height() / 2)) - (h / 2);
QRect r = QApplication::desktop()->screenGeometry(
QApplication::desktop()->screenNumber(parent));
const int border = 10;
if (options.location.h + w > r.right())
options.location.h -= (options.location.h + w) - r.right() + border;
if (options.location.v + h > r.bottom())
options.location.v -= (options.location.v + h) - r.bottom() + border;
if (options.location.h < r.left())
options.location.h = r.left() + border;
if (options.location.v < r.top())
options.location.v = r.top() + border;
}
#if 0
} else if (QWidget *p = qApp->mainWidget()) {
static int last_screen = -1;
int scr = QApplication::desktop()->screenNumber(p);
if (last_screen != scr) {
QRect r = QApplication::desktop()->screenGeometry(scr);
options.location.h = (r.x() + (r.width() / 2)) - (w / 2);
options.location.v = (r.y() + (r.height() / 2)) - (h / 2);
}
#endif
}
QList<qt_mac_filter_name*> filts = qt_mac_make_filters_list(args.filter);
qt_mac_nav_filter_type t;
t.saveDialog = false;
t.index = 0;
t.filts = &filts;
if (filts.count() > 1) {
int i = 0;
CFStringRef *arr = static_cast<CFStringRef *>(malloc(sizeof(CFStringRef) * filts.count()));
for (QList<qt_mac_filter_name*>::const_iterator it = filts.constBegin();
it != filts.constEnd(); ++it)
arr[i++] = QCFString::toCFStringRef((*it)->description);
options.popupExtension = CFArrayCreate(0, reinterpret_cast<const void **>(arr), filts.count(), 0);
}
NavDialogRef dlg;
if (args.mode == QFileDialog::DirectoryOnly ||
args.mode == QFileDialog::Directory) {
if (NavCreateChooseFolderDialog(&options, make_navProcUPP(), 0, 0, &dlg)) {
qDebug("Shouldn't happen %s:%d", __FILE__, __LINE__);
return retstrl;
}
} else {
if (NavCreateGetFileDialog(&options, 0, make_navProcUPP(), 0,
make_navFilterUPP(), (void *) (filts.isEmpty() ? 0 : &t),
&dlg)) {
qDebug("Shouldn't happen %s:%d", __FILE__, __LINE__);
return retstrl;
}
}
if (pwd && !pwd->isEmpty()) {
FSRef fsref;
if (qt_mac_create_fsref(*pwd, &fsref) == noErr) {
AEDesc desc;
if (AECreateDesc(typeFSRef, &fsref, sizeof(FSRef), &desc) == noErr)
NavCustomControl(dlg, kNavCtlSetLocation, (void*)&desc);
}
}
NavDialogRun(dlg);
if (selectedFilter) {
//.........这里部分代码省略.........
示例13: splitrx
KEquityPriceUpdateDlg::KEquityPriceUpdateDlg(QWidget *parent, const QString& securityId) :
KEquityPriceUpdateDlgDecl(parent),
m_fUpdateAll(false)
{
QStringList headerList;
headerList << i18n("Symbol") << i18nc("Equity name", "Name")
<< i18n("Price") << i18n("Date");
lvEquityList->header()->setSortIndicator(0, Qt::AscendingOrder);
lvEquityList->setColumnWidth(NAME_COL, 125);
// This is a "get it up and running" hack. Will replace this in the future.
headerList << i18nc("Internal identifier", "ID")
<< i18nc("Online quote source", "Source");
lvEquityList->setColumnWidth(ID_COL, 0);
lvEquityList->setHeaderLabels(headerList);
lvEquityList->setSelectionMode(QAbstractItemView::MultiSelection);
lvEquityList->setAllColumnsShowFocus(true);
btnUpdateAll->setEnabled(false);
btnOK->setGuiItem(KStandardGuiItem::ok());
btnCancel->setGuiItem(KStandardGuiItem::cancel());
MyMoneyFile* file = MyMoneyFile::instance();
//
// Add each price pair that we know about
//
// send in securityId == "XXX YYY" to get a single-shot update for XXX to YYY.
// for consistency reasons, this accepts the same delimiters as WebPriceQuote::launch()
QRegExp splitrx("([0-9a-z\\.]+)[^a-z0-9]+([0-9a-z\\.]+)", Qt::CaseInsensitive);
MyMoneySecurityPair currencyIds;
if (splitrx.indexIn(securityId) != -1) {
currencyIds = MyMoneySecurityPair(splitrx.cap(1).toUtf8(), splitrx.cap(2).toUtf8());
}
MyMoneyPriceList prices = file->priceList();
for (MyMoneyPriceList::ConstIterator it_price = prices.constBegin(); it_price != prices.constEnd(); ++it_price) {
const MyMoneySecurityPair& pair = it_price.key();
if (file->security(pair.first).isCurrency() && (securityId.isEmpty() || (pair == currencyIds))) {
const MyMoneyPriceEntries& entries = (*it_price);
if (entries.count() > 0 && entries.begin().key() <= QDate::currentDate()) {
addPricePair(pair);
btnUpdateAll->setEnabled(true);
}
}
}
//
// Add each investment
//
QList<MyMoneySecurity> securities = file->securityList();
for (QList<MyMoneySecurity>::const_iterator it = securities.constBegin(); it != securities.constEnd(); ++it) {
if (!(*it).isCurrency()
&& (securityId.isEmpty() || ((*it).id() == securityId))
&& !(*it).value("kmm-online-source").isEmpty()
) {
addInvestment(*it);
btnUpdateAll->setEnabled(true);
}
}
// if list is empty, add the request price pair
if (lvEquityList->invisibleRootItem()->childCount() == 0) {
addPricePair(currencyIds, true);
}
connect(btnOK, SIGNAL(clicked()), this, SLOT(accept()));
connect(btnCancel, SIGNAL(clicked()), this, SLOT(reject()));
connect(btnUpdateSelected, SIGNAL(clicked()), this, SLOT(slotUpdateSelectedClicked()));
connect(btnUpdateAll, SIGNAL(clicked()), this, SLOT(slotUpdateAllClicked()));
connect(&m_webQuote, SIGNAL(quote(QString,QString,QDate,double)),
this, SLOT(slotReceivedQuote(QString,QString,QDate,double)));
connect(&m_webQuote, SIGNAL(failed(QString,QString)),
this, SLOT(slotQuoteFailed(QString,QString)));
connect(&m_webQuote, SIGNAL(status(QString)),
this, SLOT(logStatusMessage(QString)));
connect(&m_webQuote, SIGNAL(error(QString)),
this, SLOT(logErrorMessage(QString)));
connect(lvEquityList, SIGNAL(itemSelectionChanged()), this, SLOT(slotUpdateSelection()));
// Not implemented yet.
btnConfigure->hide();
//connect(btnConfigure, SIGNAL(clicked()), this, SLOT(slotConfigureClicked()));
if (!securityId.isEmpty()) {
btnUpdateSelected->hide();
btnUpdateAll->hide();
// delete layout1;
QTimer::singleShot(100, this, SLOT(slotUpdateAllClicked()));
}
//.........这里部分代码省略.........
示例14: checkPointCoveredByLineEnds
ErrorList topolTest::checkPointCoveredByLineEnds( QgsVectorLayer *layer1, QgsVectorLayer *layer2, bool isExtent )
{
int i = 0;
ErrorList errorList;
if ( layer1->geometryType() != QgsWkbTypes::PointGeometry )
{
return errorList;
}
if ( layer2->geometryType() != QgsWkbTypes::LineGeometry )
{
return errorList;
}
QgsSpatialIndex *index = mLayerIndexes[layer2->id()];
QgsGeometry canvasExtentPoly = QgsGeometry::fromWkt( qgsInterface->mapCanvas()->extent().asWktPolygon() );
QList<FeatureLayer>::Iterator it;
for ( it = mFeatureList1.begin(); it != mFeatureList1.end(); ++it )
{
if ( !( ++i % 100 ) )
emit progress( i );
if ( testCanceled() )
break;
QgsGeometry g1 = it->feature.geometry();
QgsRectangle bb = g1.boundingBox();
QList<QgsFeatureId> crossingIds;
crossingIds = index->intersects( bb );
QList<QgsFeatureId>::ConstIterator cit = crossingIds.constBegin();
QList<QgsFeatureId>::ConstIterator crossingIdsEnd = crossingIds.constEnd();
bool touched = false;
for ( ; cit != crossingIdsEnd; ++cit )
{
QgsFeature &f = mFeatureMap2[*cit].feature;
QgsGeometry g2 = f.geometry();
if ( g2.isNull() || !_canExportToGeos( g2 ) )
{
QgsMessageLog::logMessage( tr( "Second geometry missing or GEOS import failed." ), tr( "Topology plugin" ) );
continue;
}
QgsPolylineXY g2Line = g2.asPolyline();
QgsGeometry startPoint = QgsGeometry::fromPointXY( g2Line.at( 0 ) );
QgsGeometry endPoint = QgsGeometry::fromPointXY( g2Line.last() );
touched = g1.intersects( startPoint ) || g1.intersects( endPoint );
if ( touched )
{
break;
}
}
if ( !touched )
{
QgsGeometry conflictGeom = g1;
if ( isExtent )
{
if ( canvasExtentPoly.disjoint( conflictGeom ) )
{
continue;
}
}
QList<FeatureLayer> fls;
fls << *it << *it;
//bb.scale(10);
TopolErrorPointNotCoveredByLineEnds *err = new TopolErrorPointNotCoveredByLineEnds( bb, conflictGeom, fls );
errorList << err;
}
}
return errorList;
}
示例15: renderDiagram
void QgsPieDiagram::renderDiagram( const QgsAttributes& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position )
{
QPainter* p = c.painter();
if ( !p )
{
return;
}
//get sum of values
QList<double> values;
double currentVal = 0;
double valSum = 0;
int valCount = 0;
QList<int>::const_iterator catIt = s.categoryIndices.constBegin();
for ( ; catIt != s.categoryIndices.constEnd(); ++catIt )
{
currentVal = att[*catIt].toDouble();
values.push_back( currentVal );
valSum += currentVal;
if ( currentVal ) valCount++;
}
//draw the slices
double totalAngle = 0;
double currentAngle;
//convert from mm / map units to painter units
QSizeF spu = sizePainterUnits( s.size, s, c );
double w = spu.width();
double h = spu.height();
double baseX = position.x();
double baseY = position.y() - h;
mPen.setColor( s.penColor );
setPenWidth( mPen, s, c );
p->setPen( mPen );
// there are some values > 0 available
if ( valSum > 0 )
{
QList<double>::const_iterator valIt = values.constBegin();
QList< QColor >::const_iterator colIt = s.categoryColors.constBegin();
for ( ; valIt != values.constEnd(); ++valIt, ++colIt )
{
if ( *valIt )
{
currentAngle = *valIt / valSum * 360 * 16;
mCategoryBrush.setColor( *colIt );
p->setBrush( mCategoryBrush );
// if only 1 value is > 0, draw a circle
if ( valCount == 1 )
{
p->drawEllipse( baseX, baseY, w, h );
}
else
{
p->drawPie( baseX, baseY, w, h, totalAngle + s.angleOffset, currentAngle );
}
totalAngle += currentAngle;
}
}
}
else // valSum > 0
{
// draw empty circle if no values are defined at all
mCategoryBrush.setColor( Qt::transparent );
p->setBrush( mCategoryBrush );
p->drawEllipse( baseX, baseY, w, h );
}
}