如何将自定义小部件添加为ToolButton的弹出菜单?

时间:2014-11-19 10:44:45

标签: c++ qt widget qt5 qtoolbutton

我创建了一个自定义Widget,单击ToolButton时必须显示为弹出菜单。我如何在Qt 5.1.1中执行此操作?

1 个答案:

答案 0 :(得分:4)

您应该创建自定义QWidgetAction以添加到弹出菜单中。

这是一个示例QWidgetAction

#include <QWidgetAction>

class  myCustomWidgetAction: public QWidgetAction
{
    Q_OBJECT
public:
    explicit myCustomWidgetAction(QWidget * parent);

protected:
    QWidget * createWidget(QWidget *parent);

};


myCustomWidgetAction::myCustomWidgetAction(QWidget * parent):QWidgetAction(parent) {
}
QWidget * myCustomWidgetAction::createWidget(QWidget *parent){
    myCustomWidget * widget=new myCustomWidget(parent);
    return widget;
}

然后,您可以将小部件添加到工具按钮以显示在弹出菜单中:

myCustomWidgetAction * widgetAction   = new myCustomWidgetAction(this);

ui->toolButton->addAction(widgetAction);

myCustomWidget可以是任何小部件。您可以将多个myCustomWidgetAction实例添加到toolButton。