Свойства слоя - Аттрибуты.
Вхожу в режим редактирования.
Кнопки добавить поле и удалить поле - неактивны.
Проверено в квантум версии начиная с 1.2, до 1.4 от 15 числа установленной из svn (с исходников)
ubuntu 9.04
обновлено. господин trapanator с англоязычного irc подтвердил баг, но весьма странно подтвердил

у него не работает удаление поля, а работает добавление.
<trapanator> I am not able to reproduce your bug
<trapanator> I can add field
<trapanator> stop !
<trapanator> i can add, but not remove
<trapanator> ttestt: I've compiled latest SVN
<trapanator> and I can only add, not remove fields
<trapanator> time to file a bug...
и он же любезно добавил баг.
tracfeed: Ticket #1934 (bug created): Unable to remove shapefile field in Attribute table <https://trac.osgeo.org/qgis/ticket/1934>
я думаю что нашел это место в сорцах. это файл app/qgsvectorlayerproperties.cpp
часть QgsVectorLayerProperties::UpdateButtons
Код: Выделить всё
void QgsVectorLayerProperties::updateButtons()
{
  if ( layer->isEditable() )
  {
    int cap = layer->dataProvider()->capabilities();
    mAddAttributeButton->setEnabled( cap & QgsVectorDataProvider::AddAttributes );
    mDeleteAttributeButton->setEnabled( cap & QgsVectorDataProvider::DeleteAttributes );
    mToggleEditingButton->setChecked( true );
  }
  else
  {
    mAddAttributeButton->setEnabled( false );
    mDeleteAttributeButton->setEnabled( false );
    mToggleEditingButton->setChecked( false );
  }
}
Код: Выделить всё
  mAddAttributeButton->setEnabled( cap & QgsVectorDataProvider::AddAttributes );
  mDeleteAttributeButton->setEnabled( cap & QgsVectorDataProvider::DeleteAttributes );если заменить их на
Код: Выделить всё
  mAddAttributeButton->setEnabled( cap != 0 );
  mDeleteAttributeButton->setEnabled( cap != 0 );тоесть дело в
Код: Выделить всё
  QgsVectorDataProvider::AddAttributes
  QgsVectorDataProvider::DeleteAttributesа там видим
Код: Выделить всё
bool QgsVectorDataProvider::addAttributes( const QList<QgsField> & attributes )
{
  return false;
}
bool QgsVectorDataProvider::addAttributes( const QMap<QString, QString> &attributes )
{
  const QMap<QString, QVariant::Type> &map = supportedNativeTypes();
  QList< QgsField > list;
  for ( QMap<QString, QString>::const_iterator it = attributes.constBegin(); it != attributes.constEnd(); it++ )
  {
    if ( !map.contains( it.value() ) )
      return false;
    list << QgsField( it.key(), map[ it.value()], it.value() );
  }
  return addAttributes( list );
}
bool QgsVectorDataProvider::deleteAttributes( const QgsAttributeIds& attributes )
{
  return false;
}а добавление неизвестно когда

имхо
 
						