18
18
#include < QHeaderView>
19
19
#include < QMenu>
20
20
#include < QToolButton>
21
+ #include < QHBoxLayout>
21
22
22
23
#include " qgsactionmanager.h"
23
24
#include " qgsattributetableview.h"
@@ -122,6 +123,7 @@ void QgsAttributeTableView::setModel( QgsAttributeTableFilterModel* filterModel
122
123
123
124
mActionWidget = createActionWidget ( 0 );
124
125
mActionWidget ->setVisible ( false );
126
+ updateActionImage ( mActionWidget );
125
127
}
126
128
127
129
void QgsAttributeTableView::setFeatureSelectionManager ( QgsIFeatureSelectionManager* featureSelectionManager )
@@ -137,11 +139,25 @@ void QgsAttributeTableView::setFeatureSelectionManager( QgsIFeatureSelectionMana
137
139
138
140
QWidget* QgsAttributeTableView::createActionWidget ( QgsFeatureId fid )
139
141
{
140
- QToolButton* toolButton = new QToolButton ( this );
141
- toolButton->setPopupMode ( QToolButton::MenuButtonPopup );
142
-
142
+ QgsAttributeTableConfig attributeTableConfig = mFilterModel ->layer ()->attributeTableConfig ();
143
143
QgsActionManager* actions = mFilterModel ->layer ()->actions ();
144
144
145
+ QToolButton* toolButton = nullptr ;
146
+ QWidget* container = nullptr ;
147
+
148
+ if ( attributeTableConfig.actionWidgetStyle () == QgsAttributeTableConfig::DropDown )
149
+ {
150
+ toolButton = new QToolButton ( this );
151
+ toolButton->setPopupMode ( QToolButton::MenuButtonPopup );
152
+ container = toolButton;
153
+ }
154
+ else
155
+ {
156
+ container = new QWidget ( this );
157
+ container->setLayout ( new QHBoxLayout () );
158
+ container->layout ()->setMargin ( 0 );
159
+ }
160
+
145
161
for ( int i = 0 ; i < actions->size (); ++i )
146
162
{
147
163
const QgsAction& action = actions->at ( i );
@@ -156,18 +172,27 @@ QWidget* QgsAttributeTableView::createActionWidget( QgsFeatureId fid )
156
172
157
173
connect ( act, SIGNAL ( triggered ( bool ) ), this , SLOT ( actionTriggered () ) );
158
174
159
- toolButton->addAction ( act );
175
+ if ( attributeTableConfig.actionWidgetStyle () == QgsAttributeTableConfig::DropDown )
176
+ {
177
+ toolButton->addAction ( act );
178
+
179
+ if ( actions->defaultAction () == i )
180
+ toolButton->setDefaultAction ( act );
160
181
161
- if ( actions->defaultAction () == i )
162
- toolButton->setDefaultAction ( act );
182
+ container = toolButton;
183
+ }
184
+ else
185
+ {
186
+ QToolButton* btn = new QToolButton;
187
+ btn->setDefaultAction ( act );
188
+ container->layout ()->addWidget ( btn );
189
+ }
163
190
}
164
191
165
- if ( !toolButton->actions ().isEmpty () && actions->defaultAction () == -1 )
192
+ if ( toolButton && !toolButton->actions ().isEmpty () && actions->defaultAction () == -1 )
166
193
toolButton->setDefaultAction ( toolButton->actions ().first () );
167
194
168
- updateActionImage ( toolButton );
169
-
170
- return toolButton;
195
+ return container;
171
196
}
172
197
173
198
void QgsAttributeTableView::closeEvent ( QCloseEvent *e )
0 commit comments