本文整理汇总了C++中SymbolLayerItem::layer方法的典型用法代码示例。如果您正苦于以下问题:C++ SymbolLayerItem::layer方法的具体用法?C++ SymbolLayerItem::layer怎么用?C++ SymbolLayerItem::layer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SymbolLayerItem
的用法示例。
在下文中一共展示了SymbolLayerItem::layer方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: changeLayer
void QgsSymbolSelectorWidget::changeLayer( QgsSymbolLayer *newLayer )
{
SymbolLayerItem *item = currentLayerItem();
QgsSymbolLayer *layer = item->layer();
if ( layer->subSymbol() )
{
item->removeRow( 0 );
}
// update symbol layer item
item->setLayer( newLayer );
// When it is a marker symbol
if ( newLayer->subSymbol() )
{
loadSymbol( newLayer->subSymbol(), item );
layersTree->setExpanded( item->index(), true );
}
// Change the symbol at last to avoid deleting item's layer
QgsSymbol *symbol = static_cast<SymbolLayerItem *>( item->parent() )->symbol();
int layerIdx = item->parent()->rowCount() - item->row() - 1;
symbol->changeSymbolLayer( layerIdx, newLayer );
item->updatePreview();
updatePreview();
// Important: This lets the layer have its own layer properties widget
layerChanged();
}
示例2:
QgsSymbolLayer *QgsSymbolSelectorWidget::currentLayer()
{
QModelIndex idx = layersTree->currentIndex();
if ( !idx.isValid() )
return nullptr;
SymbolLayerItem *item = static_cast<SymbolLayerItem *>( model->itemFromIndex( idx ) );
if ( item->isLayer() )
return item->layer();
return nullptr;
}
示例3: updateUi
void QgsSymbolV2SelectorDialog::layerChanged()
{
updateUi();
SymbolLayerItem *currentItem = static_cast<SymbolLayerItem*>( model->itemFromIndex( layersTree->currentIndex() ) );
if ( currentItem == NULL )
return;
if ( currentItem->isLayer() )
{
SymbolLayerItem *parent = static_cast<SymbolLayerItem*>( currentItem->parent() );
mDataDefineRestorer.reset( new DataDefinedRestorer( parent->symbol(), currentItem->layer() ) );
QgsLayerPropertiesWidget *layerProp = new QgsLayerPropertiesWidget( currentItem->layer(), parent->symbol(), mVectorLayer );
layerProp->setExpressionContext( mPresetExpressionContext.data() );
layerProp->setMapCanvas( mMapCanvas );
setWidget( layerProp );
connect( layerProp, SIGNAL( changed() ), mDataDefineRestorer.data(), SLOT( restore() ) );
connect( layerProp, SIGNAL( changed() ), this, SLOT( updateLayerPreview() ) );
// This connection when layer type is changed
connect( layerProp, SIGNAL( changeLayer( QgsSymbolLayerV2* ) ), this, SLOT( changeLayer( QgsSymbolLayerV2* ) ) );
}
示例4:
QgsSymbolLayerV2* QgsSymbolV2SelectorDialog::currentLayer()
{
QModelIndex idx = layersTree->currentIndex();
if ( !idx.isValid() )
return NULL;
SymbolLayerItem *item = static_cast<SymbolLayerItem*>( model->itemFromIndex( idx ) );
if ( item->isLayer() )
return item->layer();
return NULL;
}
示例5: layerChanged
void QgsSymbolSelectorWidget::layerChanged()
{
updateUi();
SymbolLayerItem *currentItem = static_cast<SymbolLayerItem *>( model->itemFromIndex( layersTree->currentIndex() ) );
if ( !currentItem )
return;
if ( currentItem->isLayer() )
{
SymbolLayerItem *parent = static_cast<SymbolLayerItem *>( currentItem->parent() );
mDataDefineRestorer.reset( new DataDefinedRestorer( parent->symbol(), currentItem->layer() ) );
QgsLayerPropertiesWidget *layerProp = new QgsLayerPropertiesWidget( currentItem->layer(), parent->symbol(), mVectorLayer );
layerProp->setDockMode( this->dockMode() );
layerProp->setContext( mContext );
setWidget( layerProp );
connect( layerProp, &QgsLayerPropertiesWidget::changed, mDataDefineRestorer.get(), &DataDefinedRestorer::restore );
connect( layerProp, &QgsLayerPropertiesWidget::changed, this, &QgsSymbolSelectorWidget::updateLayerPreview );
// This connection when layer type is changed
connect( layerProp, &QgsLayerPropertiesWidget::changeLayer, this, &QgsSymbolSelectorWidget::changeLayer );
connectChildPanel( layerProp );
}
else
{
mDataDefineRestorer.reset();
// then it must be a symbol
currentItem->symbol()->setLayer( mVectorLayer );
// Now populate symbols of that type using the symbols list widget:
QgsSymbolsListWidget *symbolsList = new QgsSymbolsListWidget( currentItem->symbol(), mStyle, mAdvancedMenu, this, mVectorLayer );
symbolsList->setContext( mContext );
setWidget( symbolsList );
connect( symbolsList, &QgsSymbolsListWidget::changed, this, &QgsSymbolSelectorWidget::symbolChanged );
}
updateLockButton();
}
示例6: duplicateLayer
void QgsSymbolSelectorWidget::duplicateLayer()
{
QModelIndex idx = layersTree->currentIndex();
if ( !idx.isValid() )
return;
SymbolLayerItem *item = static_cast<SymbolLayerItem *>( model->itemFromIndex( idx ) );
if ( !item->isLayer() )
return;
QgsSymbolLayer *source = item->layer();
int insertIdx = item->row();
item = static_cast<SymbolLayerItem *>( item->parent() );
QgsSymbol *parentSymbol = item->symbol();
QgsSymbolLayer *newLayer = source->clone();
if ( insertIdx == -1 )
parentSymbol->appendSymbolLayer( newLayer );
else
parentSymbol->insertSymbolLayer( item->rowCount() - insertIdx, newLayer );
SymbolLayerItem *newLayerItem = new SymbolLayerItem( newLayer );
item->insertRow( insertIdx == -1 ? 0 : insertIdx, newLayerItem );
if ( newLayer->subSymbol() )
{
loadSymbol( newLayer->subSymbol(), newLayerItem );
layersTree->setExpanded( newLayerItem->index(), true );
}
item->updatePreview();
layersTree->setCurrentIndex( model->indexFromItem( newLayerItem ) );
updateUi();
updatePreview();
}