21 #include <QHeaderView> 23 #include <QMouseEvent> 27 : QSortFilterProxyModel( parent )
30 setSourceModel( mModel );
40 mModel->setSelected( mapToSource( index ) );
52 if ( !index.isValid() )
61 if ( role == Qt::FontRole )
67 boldFont.setBold(
true );
72 return QSortFilterProxyModel::data( index, role );
82 , mDesigner( designer )
84 setColumnWidth( 0, 30 );
85 setColumnWidth( 1, 30 );
86 setDragEnabled(
true );
87 setAcceptDrops(
true );
88 setDropIndicatorShown(
true );
89 setDragDropMode( QAbstractItemView::InternalMove );
90 setContextMenuPolicy( Qt::CustomContextMenu );
92 connect(
this, &QWidget::customContextMenuRequested,
this, &QgsLayoutItemsListView::showContextMenu );
101 header()->setSectionResizeMode( 0, QHeaderView::Fixed );
102 header()->setSectionResizeMode( 1, QHeaderView::Fixed );
103 #if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) 110 header()->setSectionsMovable(
false );
115 void QgsLayoutItemsListView::showContextMenu( QPoint point )
117 QModelIndex index = indexAt( point );
122 QMenu *menu =
new QMenu(
this );
124 QAction *copyAction =
new QAction( tr(
"Copy Item" ), menu );
125 connect( copyAction, &QAction::triggered,
this, [
this, item]()
129 menu->addAction( copyAction );
130 QAction *deleteAction =
new QAction( tr(
"Delete Item" ), menu );
131 connect( deleteAction, &QAction::triggered,
this, [
this, item]()
135 menu->addAction( deleteAction );
136 menu->addSeparator();
138 QAction *itemPropertiesAction =
new QAction( tr(
"Item Properties…" ), menu );
139 connect( itemPropertiesAction, &QAction::triggered,
this, [
this, item]()
143 menu->addAction( itemPropertiesAction );
145 menu->popup( mapToGlobal( point ) );
void setCurrentLayout(QgsLayout *layout)
Sets the current layout.
QgsLayoutItem * itemFromIndex(const QModelIndex &index) const
Returns the QgsLayoutItem corresponding to a QModelIndex index, if possible.
Base class for graphical items within a QgsLayout.
static const double UI_SCALE_FACTOR
UI scaling factor.
Model for the layout items list view.
void setSelected(const QModelIndex &index)
Sets the selected index.
A common interface for layout designer dialogs and widgets.
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
virtual void showItemOptions(QgsLayoutItem *item, bool bringPanelToFront=true)=0
Shows the configuration widget for the specified layout item.
QgsLayoutItemsListView(QWidget *parent, QgsLayoutDesignerInterface *designer)
Constructor for QgsLayoutItemsListView.
QgsLayoutItemsListViewModel(QgsLayoutModel *model, QObject *parent)
constructor
void copyItems(const QList< QgsLayoutItem * > &items, ClipboardOperation operation)
Cuts or copies the a list of items, respecting the specified operation.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
virtual QgsLayoutView * view()=0
Returns the layout view utilized by the designer.
QgsLayoutModel * itemsModel()
Returns the items model attached to the layout.
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
void deleteItems(const QList< QgsLayoutItem * > &items)
Delete the specified items.
A model for items attached to a layout.
QgsLayoutItem * itemFromIndex(const QModelIndex &index) const
Returns the layout item listed at the specified index.