Как положить кнопку внутри управления QMenu или QAction?

мне нужно поставить QPushButton внутри QMenu. Возможно ли это, и если да, то как?

Я хочу достичь чего-то подобного:

image

2 ответов


QWidgetAction - это то, что вы ищете. Это то, что находится на Qt docs

класс QWidgetAction расширяет QAction интерфейсом для вставки пользовательских виджетов в контейнеры на основе действий

таким образом, в основном он дает пользовательский интерфейс для QAction в соответствии с тем, что QWidget вы передаете ему. Я использовал QWidgetAction, чтобы показать флажок как элементы QMenu.

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

затем вы можете обрабатывать сигналы от галку соответственно.


Если вы хотите, чтобы элемент меню имел только состояние, вы можете использовать свойство Checkable QAction:

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