コード例 #1
0
QgsLocatorOptionsWidget::QgsLocatorOptionsWidget( QgsLocatorWidget *locator, QWidget *parent )
  : QTreeView( parent )
  , mLocatorWidget( locator )
  , mLocator( locator->locator() )
{

  mModel = new QgsLocatorFiltersModel( mLocator, this );
  setModel( mModel );

  header()->setStretchLastSection( false );
  header()->setSectionResizeMode( QgsLocatorFiltersModel::Name, QHeaderView::Stretch );

  setEditTriggers( QAbstractItemView::AllEditTriggers );
  setAlternatingRowColors( true );
  setSelectionMode( QAbstractItemView::NoSelection );

  // add the config button
  for ( int row = 0; row < mModel->rowCount(); ++row )
  {
    QModelIndex index = mModel->index( row, QgsLocatorFiltersModel::Config );
    QWidget *bt = mModel->configButton( index, this );
    if ( bt )
    {
      setIndexWidget( index, bt );
    }
  }
}
コード例 #2
0
ファイル: itemdelegate.cpp プロジェクト: libbkmz/CopyQ
void ItemDelegate::previousItemLoader(const QModelIndex &index)
{
    ItemWidget *w = m_cache[index.row()];
    if (w != NULL) {
        ItemWidget *w2 = ItemFactory::instance()->previousItemLoader(index, w);
        if (w2 != NULL)
            setIndexWidget(index, w2);
    }
}
コード例 #3
0
ファイル: itemdelegate.cpp プロジェクト: GabLeRoux/CopyQ
ItemWidget *ItemDelegate::cache(const QModelIndex &index)
{
    int n = index.row();

    ItemWidget *w = m_cache[n];
    if (w == NULL) {
        w = ConfigurationManager::instance()->itemFactory()->createItem(index, m_view->viewport());
        setIndexWidget(index, w);
    }

    return w;
}
コード例 #4
0
ファイル: itemdelegate.cpp プロジェクト: libbkmz/CopyQ
ItemWidget *ItemDelegate::cache(const QModelIndex &index)
{
    int n = index.row();

    ItemWidget *w = m_cache[n];
    if (w != NULL)
        return w;

    w = ItemFactory::instance()->createItem(index, m_parent);
    setIndexWidget(index, w);

    return w;
}
コード例 #5
0
ファイル: itemdelegate.cpp プロジェクト: GabLeRoux/CopyQ
bool ItemDelegate::otherItemLoader(const QModelIndex &index, bool next)
{
    ItemWidget *w = m_cache[index.row()];
    if (w != NULL) {
        ItemWidget *w2 =
                ConfigurationManager::instance()->itemFactory()->otherItemLoader(index, w, next);
        if (w2 != NULL) {
            setIndexWidget(index, w2);
            return true;
        }
    }

    return false;
}
コード例 #6
0
void QgsAttributeTableView::mouseMoveEvent( QMouseEvent *event )
{
  QModelIndex index = indexAt( event->pos() );
  if ( index.data( QgsAttributeTableFilterModel::TypeRole ) == QgsAttributeTableFilterModel::ColumnTypeActionButton )
  {
    Q_ASSERT( index.isValid() );

    if ( !indexWidget( index ) )
      setIndexWidget( index, createActionWidget( mFilterModel->data( index, QgsAttributeTableModel::FeatureIdRole ).toLongLong() ) );
  }

  setSelectionMode( QAbstractItemView::NoSelection );
  QTableView::mouseMoveEvent( event );
  setSelectionMode( QAbstractItemView::ExtendedSelection );
}
コード例 #7
0
void QgsLocatorOptionsWidget::dataChanged( const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles )
{
  for ( int row = topLeft.row(); row < bottomRight.row(); ++row )
  {
    QModelIndex index = mModel->index( row, QgsLocatorFiltersModel::Config );
    if ( !indexWidget( index ) )
    {
      QWidget *bt = mModel->configButton( index, this );
      if ( bt )
      {
        setIndexWidget( index, bt );
      }
    }
  }
  QTreeView::dataChanged( topLeft, bottomRight, roles );
}
コード例 #8
0
void
AirportTableView::__updateButtons(int _start, int _end) {
    const AirportTableModel* apModel = qobject_cast< const AirportTableModel* >(model());
    Q_ASSERT(apModel);

    if (_start == -1)
        _start = 0;

    if (_end == -1)
        _end = apModel->rowCount();

    for (int i = _start; i < _end; ++i) {
        AirportDetailsButton* dButton = new AirportDetailsButton(apModel->getAirports()[i]);
        connect(dButton,                                 SIGNAL(clicked(const Airport*)),
                AirportDetailsWindow::getSingletonPtr(), SLOT(show(const Airport*)));
        setIndexWidget(apModel->index(i, AirportTableModel::Button), dButton);
    }
}
コード例 #9
0
ファイル: qgslayertreeview.cpp プロジェクト: AM7000000/QGIS
void QgsLayerTreeView::modelRowsInserted( const QModelIndex& index, int start, int end )
{
  QgsLayerTreeNode* parentNode = layerTreeModel()->index2node( index );
  if ( !parentNode )
    return;

  // Embedded widgets - replace placeholders in the model by actual widgets
  if ( layerTreeModel()->testFlag( QgsLayerTreeModel::UseEmbeddedWidgets ) && QgsLayerTree::isLayer( parentNode ) )
  {
    QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer( parentNode );
    if ( QgsMapLayer* layer = nodeLayer->layer() )
    {
      int widgetsCount = layer->customProperty( "embeddedWidgets/count", 0 ).toInt();
      QList<QgsLayerTreeModelLegendNode*> legendNodes = layerTreeModel()->layerLegendNodes( nodeLayer );
      for ( int i = 0; i < widgetsCount; ++i )
      {
        QString providerId = layer->customProperty( QString( "embeddedWidgets/%1/id" ).arg( i ) ).toString();
        if ( QgsLayerTreeEmbeddedWidgetProvider* provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId ) )
        {
          QModelIndex index = layerTreeModel()->legendNode2index( legendNodes[i] );
          setIndexWidget( index, provider->createWidget( layer, i ) );
        }
      }
    }
  }


  if ( QgsLayerTree::isLayer( parentNode ) )
  {
    // if ShowLegendAsTree flag is enabled in model, we may need to expand some legend nodes
    QStringList expandedNodeKeys = parentNode->customProperty( "expandedLegendNodes" ).toStringList();
    if ( expandedNodeKeys.isEmpty() )
      return;

    Q_FOREACH ( QgsLayerTreeModelLegendNode* legendNode, layerTreeModel()->layerLegendNodes( QgsLayerTree::toLayer( parentNode ) ) )
    {
      QString ruleKey = legendNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString();
      if ( expandedNodeKeys.contains( ruleKey ) )
        setExpanded( layerTreeModel()->legendNode2index( legendNode ), true );
    }
    return;
  }
コード例 #10
0
void cMaterialItemView::rowsInserted(const QModelIndex &parent, int start, int end)
{
	for (int r = start; r <= end; r++)
	{
		cMaterialWidget *widget = new cMaterialWidget(this);
		widget->setAutoFillBackground(true);
		setIndexWidget(model()->index(r, 0, parent), widget);
	}
	QAbstractItemView::rowsInserted(parent, start, end);
	// updateGeometries();

	updateScrollBar();
	updateGeometries();

	setCurrentIndex(model()->index(start, 0));
	scrollTo(model()->index(start, 0));

	model()->fetchMore(QModelIndex());
	viewport()->update();
}
コード例 #11
0
SmartList::SmartList(QWidget *parent) :
    QTreeView(parent)
{
    verticalScrollBar()->hide();

    connect(this, &QAbstractItemView::entered, [this](const QModelIndex & index) {
        auto widget = indexWidget(index);
        if (!widget) {
            ComBar* bar = new ComBar();
            setIndexWidget(index, bar);
            connect(bar, &ComBar::btnVideoClicked, this, [=](){ emit btnVideoClicked(); });
        }
        else if (index.isValid())
            indexWidget(index)->setVisible(true);

        if(hoveredRow_.isValid() and indexWidget(hoveredRow_))
            indexWidget(hoveredRow_)->setVisible(false);

        hoveredRow_ = index;
    });

    setVerticalScrollMode(ScrollPerPixel);
}