如何将按钮放在QMenu或QAction控件内?

时间:2012-01-02 19:38:28

标签: qt user-interface user-controls

我需要在QPushButton内加QMenu。它是否可能,如果可能,那么如何?

我想实现这样的目标:

image

2 个答案:

答案 0 :(得分:10)

QWidgetAction是您正在寻找的。这是关于qt docs的内容

  

QWidgetAction类通过一个接口扩展QAction,用于将自定义小部件插入基于操作的容器

所以基本上它根据你传递给它的QWidget为QAction提供了一个自定义UI。 我使用QWidgetAction将复选框显示为QMenu项目。

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

然后,您可以相应地处理来自复选框的信号。

答案 1 :(得分:1)

如果您只想要一个菜单​​项具有状态,您可以使用QAction的Checkable属性:

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