本文整理汇总了C++中QgsVectorLayer::rollBack方法的典型用法代码示例。如果您正苦于以下问题:C++ QgsVectorLayer::rollBack方法的具体用法?C++ QgsVectorLayer::rollBack怎么用?C++ QgsVectorLayer::rollBack使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer::rollBack方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createTransactionDocument
//.........这里部分代码省略.........
QMap< QString, QString >::const_iterator it = propertyMap.constBegin();
for ( ; it != propertyMap.constEnd(); ++it )
{
fieldName = it.key();
fieldMapIt = fieldMap.find( fieldName );
if ( fieldMapIt == fieldMap.constEnd() )
{
continue;
}
QgsField field = fields.at( fieldMapIt.value() );
if ( field.type() == 2 )
layer->changeAttributeValue( *fidIt, fieldMapIt.value(), it.value().toInt( &conversionSuccess ) );
else if ( field.type() == 6 )
layer->changeAttributeValue( *fidIt, fieldMapIt.value(), it.value().toDouble( &conversionSuccess ) );
else
layer->changeAttributeValue( *fidIt, fieldMapIt.value(), it.value() );
}
if ( !geometryElem.isNull() )
{
QgsGeometry g = QgsOgcUtils::geometryFromGML( geometryElem );
if ( !layer->changeGeometry( *fidIt, g ) )
{
throw QgsRequestNotWellFormedException( QStringLiteral( "Error in change geometry" ) );
}
}
#ifdef HAVE_SERVER_PYTHON_PLUGINS
fit = layer->getFeatures( QgsFeatureRequest( *fidIt ) );
while ( fit.nextFeature( feature ) )
{
if ( !accessControl->allowToEdit( layer, feature ) )
{
layer->rollBack();
throw QgsSecurityAccessException( QStringLiteral( "Feature modify permission denied" ) );
}
}
#endif
}
}
}
// Commit the changes of the update elements
if ( !layer->commitChanges() )
{
addTransactionResult( resp, respElem, QStringLiteral( "PARTIAL" ), QStringLiteral( "Update" ), layer->commitErrors().join( QStringLiteral( "\n " ) ) );
return resp;
}
// Start the delete transaction
layer->startEditing();
if (( cap & QgsVectorDataProvider::DeleteFeatures ) )
{
// Loop through the delete elements
QDomNodeList delNodeList = typeNameElem.elementsByTagNameNS( WFS_NAMESPACE, QStringLiteral( "Delete" ) );
for ( int j = 0; j < delNodeList.count(); ++j )
{
if ( !configParser->wfstDeleteLayers().contains( layer->id() ) )
{
//no wfs permissions to do updates
QString errorMsg = "No permissions to do WFS deletes on layer '" + layer->name() + "'";
QgsMessageLog::logMessage( errorMsg, QStringLiteral( "Server" ), QgsMessageLog::CRITICAL );
addTransactionResult( resp, respElem, QStringLiteral( "FAILED" ), QStringLiteral( "Delete" ), errorMsg );
return resp;
}
actionElem = delNodeList.at( j ).toElement();
QDomElement filterElem = actionElem.firstChild().toElement();
示例2: testOKButtonStatus
void TestQgsAttributeForm::testOKButtonStatus()
{
// make a temporary vector layer
QString def = QStringLiteral( "Point?field=col0:integer" );
QgsVectorLayer* layer = new QgsVectorLayer( def, QStringLiteral( "test" ), QStringLiteral( "memory" ) );
// add a feature to the vector layer
QgsFeature ft( layer->dataProvider()->fields(), 1 );
ft.setAttribute( QStringLiteral( "col0" ), 0 );
ft.setValid( true );
// set constraint
layer->setConstraintExpression( 0, QString() );
// build a form for this feature
QgsAttributeForm form( layer );
form.setFeature( ft );
QPushButton *okButton = form.mButtonBox->button( QDialogButtonBox::Ok );
// get wrapper
QgsEditorWidgetWrapper *ww;
ww = qobject_cast<QgsEditorWidgetWrapper*>( form.mWidgets[0] );
// testing stuff
QSignalSpy spy1( &form, SIGNAL( attributeChanged( QString, QVariant ) ) );
QSignalSpy spy2( layer, SIGNAL( editingStarted() ) );
QSignalSpy spy3( layer, SIGNAL( editingStopped() ) );
// no constraint but layer not editable : OK button disabled
QCOMPARE( layer->isEditable(), false );
QCOMPARE( okButton->isEnabled(), false );
// no constraint and editable layer : OK button enabled
layer->startEditing();
QCOMPARE( spy2.count(), 1 );
QCOMPARE( layer->isEditable(), true );
QCOMPARE( okButton->isEnabled(), true );
// invalid constraint and editable layer : OK button disabled
layer->setConstraintExpression( 0, QStringLiteral( "col0 = 0" ) );
QgsAttributeForm form2( layer );
form2.setFeature( ft );
ww = qobject_cast<QgsEditorWidgetWrapper*>( form2.mWidgets[0] );
okButton = form2.mButtonBox->button( QDialogButtonBox::Ok );
ww->setValue( 1 );
QCOMPARE( okButton->isEnabled(), false );
// valid constraint and editable layer : OK button enabled
layer->setConstraintExpression( 0, QStringLiteral( "col0 = 2" ) );
QgsAttributeForm form3( layer );
form3.setFeature( ft );
ww = qobject_cast<QgsEditorWidgetWrapper*>( form3.mWidgets[0] );
okButton = form3.mButtonBox->button( QDialogButtonBox::Ok );
ww->setValue( 2 );
QCOMPARE( okButton->isEnabled(), true );
// valid constraint and not editable layer : OK button disabled
layer->rollBack();
QCOMPARE( spy3.count(), 1 );
QCOMPARE( layer->isEditable(), false );
QCOMPARE( okButton->isEnabled(), false );
// set soft constraint
layer->setFieldConstraint( 0, QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthSoft );
QgsAttributeForm form4( layer );
form4.setFeature( ft );
ww = qobject_cast<QgsEditorWidgetWrapper*>( form4.mWidgets[0] );
okButton = form4.mButtonBox->button( QDialogButtonBox::Ok );
ww->setValue( 1 );
QVERIFY( !okButton->isEnabled() );
layer->startEditing();
// just a soft constraint, so OK should be enabled
QVERIFY( okButton->isEnabled() );
layer->rollBack();
QVERIFY( !okButton->isEnabled() );
}