29  connect( 
this, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsLayoutItemComboBox::indexChanged );
 
   34  const bool prevAllowEmpty = mProxyModel && mProxyModel->allowEmptyItem();
 
   35  const int itemType = mProxyModel ? mProxyModel->filterType() : -1;
 
   36  mProxyModel = std::make_unique< QgsLayoutProxyModel >( layout, 
this );
 
   37  connect( mProxyModel.get(), &QAbstractItemModel::rowsInserted, 
this, &QgsLayoutItemComboBox::rowsChanged );
 
   38  connect( mProxyModel.get(), &QAbstractItemModel::rowsRemoved, 
this, &QgsLayoutItemComboBox::rowsChanged );
 
   39  setModel( mProxyModel.get() );
 
   42  mProxyModel->setAllowEmptyItem( prevAllowEmpty );
 
   49  return mProxyModel->layout();
 
   54  if ( !mProxyModel->sourceLayerModel() )
 
   57  const QModelIndex idx = mProxyModel->sourceLayerModel()->indexForItem( 
const_cast< QgsLayoutItem * 
>( 
item ) );
 
   60    const QModelIndex proxyIdx = mProxyModel->mapFromSource( idx );
 
   61    if ( proxyIdx.isValid() )
 
   63      setCurrentIndex( proxyIdx.row() );
 
   67  setCurrentIndex( mProxyModel->allowEmptyItem() ? 0 : -1 );
 
   72  return item( currentIndex() );
 
   75void QgsLayoutItemComboBox::indexChanged( 
int i )
 
   81void QgsLayoutItemComboBox::rowsChanged()
 
   88  else if ( count() == 0 )
 
   96  mProxyModel->setFilterType( 
itemType );
 
  101  return mProxyModel->filterType();
 
  106  mProxyModel->setExceptedItemList( exceptList );
 
  111  return mProxyModel->exceptedItemList();
 
  116  mProxyModel->setAllowEmptyItem( allowEmpty );
 
  121  return mProxyModel->allowEmptyItem();
 
  126  mProxyModel->setItemFlags( flags );
 
  131  return mProxyModel->itemFlags();
 
  136  const QModelIndex proxyIndex = mProxyModel->index( index, 0 );
 
  137  if ( !proxyIndex.isValid() )
 
  142  const QModelIndex sourceIndex = mProxyModel->mapToSource( proxyIndex );
 
  143  if ( !sourceIndex.isValid() )
 
  148  return mProxyModel->itemFromSourceIndex( sourceIndex );
 
QgsLayoutItem * item(int index) const
Returns the item currently shown at the specified index within the combo box.
 
void setCurrentLayout(QgsLayout *layout)
Sets the layout containing the items to list in the combo box.
 
QgsLayout * currentLayout()
Returns the current layout containing the items shown in the combo box.
 
void setExceptedItemList(const QList< QgsLayoutItem * > &exceptList)
Sets a list of specific items to exclude from the combo box.
 
QgsLayoutItem * currentItem() const
Returns the item currently selected in the combo box.
 
QgsLayoutItemRegistry::ItemType itemType() const
Returns the filter for the item types to show in the combo box.
 
void setItemType(QgsLayoutItemRegistry::ItemType itemType)
Sets a filter for the item type to show in the combo box.
 
QgsLayoutItemComboBox(QWidget *parent=nullptr, QgsLayout *layout=nullptr)
QgsLayoutItemComboBox creates a combo box to display a list of items in a layout.
 
void setAllowEmptyItem(bool allowEmpty)
Sets whether an optional empty layout item is present in the combobox.
 
void setItem(const QgsLayoutItem *item)
Sets the currently selected item in the combo box.
 
QgsLayoutItem::Flags itemFlags() const
Returns the layout item flags used for filtering the available items.
 
bool allowEmptyItem() const
Returns true if the model includes the empty item choice.
 
void setItemFlags(QgsLayoutItem::Flags flags)
Sets layout item flags to use for filtering the available items.
 
QList< QgsLayoutItem * > exceptedItemList() const
Returns the list of specific items excluded from the combo box.
 
void itemChanged(QgsLayoutItem *item)
Emitted whenever the currently selected item changes.
 
Base class for graphical items within a QgsLayout.
 
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.