liri2006
liri2006

Reputation: 591

How to put pushbutton inside the QMenu or QAction control?

I need to put a QPushButton inside a QMenu. Is it possible and, if so, then how?

I want to achieve something like this:

image

Upvotes: 7

Views: 6405

Answers (2)

Vladimir Shutow
Vladimir Shutow

Reputation: 1038

If you only want a menu item to have a state, you may use Checkable property of QAction:

rotateAct = new QAction(QIcon(":/images/Mouse/Rotate.png"), tr("&Rotate"), this);
rotateAct->setCheckable(true);

Upvotes: 2

dev
dev

Reputation: 2200

QWidgetAction is what you are looking for. This is what is on qt docs

The QWidgetAction class extends QAction by an interface for inserting custom widgets into action based containers

So basically it gives a custom UI to QAction according to what QWidget you pass to it. I have used QWidgetAction to show checkbox as QMenu items.

QCheckBox *chkBox = new QCheckBox(menu);
chkBox ->setText("MyCheckBox");
QWidgetAction *chkBoxAction= new QWidgetAction(menu);
chkBoxAction->setDefaultWidget(chkBox);
menu->addAction(chkBoxAction);

You can then handle signals from checkbox accordingly.

Upvotes: 11

Related Questions