17#include <QStackedWidget> 
   27  mEditPage = 
new QWidget();
 
   28  QHBoxLayout *l = 
new QHBoxLayout();
 
   29  l->setContentsMargins( 0, 0, 0, 0 );
 
   30  mEditPage->setLayout( l );
 
   32  l = 
new QHBoxLayout();
 
   33  l->setContentsMargins( 0, 0, 0, 0 );
 
   34  mSearchFrame = 
new QWidget();
 
   35  mSearchFrame->setLayout( l );
 
   37  mSearchPage = 
new QWidget();
 
   38  l = 
new QHBoxLayout();
 
   39  l->setContentsMargins( 0, 0, 0, 0 );
 
   40  mSearchPage->setLayout( l );
 
   41  l->addWidget( mSearchFrame, 1 );
 
   43  mSearchWidgetToolButton->setObjectName( QStringLiteral( 
"SearchWidgetToolButton" ) );
 
   45           this, &QgsAttributeFormWidget::searchWidgetFlagsChanged );
 
   46  l->addWidget( mSearchWidgetToolButton, 0 );
 
   48  mStack = 
new QStackedWidget();
 
   60  l = 
new QHBoxLayout();
 
   61  l->setContentsMargins( 0, 0, 0, 0 );
 
   63  l->addWidget( mStack );
 
   65  if ( !mWidget || !mForm )
 
   68  mEditPage->layout()->addWidget( mWidget->
widget() );
 
   71  setSizePolicy( mWidget->
widget()->sizePolicy() );
 
   83  mSearchPage = 
nullptr;
 
  104  mSearchWidgets.clear();
 
  105  mSearchWidgets << wrapper;
 
  106  mSearchFrame->layout()->addWidget( wrapper->widget() );
 
  107  mSearchWidgetToolButton->setAvailableFlags( wrapper->supportedFlags() );
 
  108  mSearchWidgetToolButton->setActiveFlags( QgsSearchWidgetWrapper::FilterFlags() );
 
  109  mSearchWidgetToolButton->setDefaultFlags( wrapper->defaultFlags() );
 
  116  mSearchWidgets << wrapper;
 
  118  mSearchFrame->layout()->addWidget( wrapper->
widget() );
 
  119  wrapper->
widget()->hide();
 
  124  return mSearchWidgets;
 
  129  if ( mSearchWidgets.isEmpty() )
 
  132  if ( !mSearchWidgetToolButton->
isActive() )
 
  140    return QStringLiteral( 
"%1 AND %2" ).arg( filter1, filter2 );
 
  147    return QStringLiteral( 
"%1 OR %2" ).arg( filter1, filter2 );
 
  150  return mSearchWidgets.at( 0 )->createExpression( mSearchWidgetToolButton->
activeFlags() );
 
  156  const auto constMSearchWidgets = mSearchWidgets;
 
  159    widget->clearWidget();
 
  165  return mWidget->
layer();
 
  168void QgsAttributeFormWidget::searchWidgetFlagsChanged( QgsSearchWidgetWrapper::FilterFlags flags )
 
  170  const auto constMSearchWidgets = mSearchWidgets;
 
  175    if ( !mSearchWidgetToolButton->
isActive() )
 
  177      widget->clearWidget();
 
  181  if ( mSearchWidgets.count() >= 2 )
 
  188void QgsAttributeFormWidget::updateWidgets()
 
  195  QWidget *currentVisibleWidget = mStack->currentWidget();
 
  197  QWidget *newVisibleWidget = 
nullptr;
 
  202      newVisibleWidget = mEditPage;
 
  208      newVisibleWidget = mSearchPage;
 
  213  if ( newVisibleWidget != currentVisibleWidget )
 
  215    if ( currentVisibleWidget )
 
  218      mStack->removeWidget( currentVisibleWidget );
 
  221    mStack->addWidget( newVisibleWidget );
 
  222    mStack->setCurrentWidget( newVisibleWidget );
 
  228  return mSearchWidgetToolButton->isVisible();
 
Represents a vector layer which manages a vector based data sets.