Qt自定义按钮MenuButton继承QPushButton
```cpp
#define MENUBUTTON_H
#include <QPushButton>
class MenuButton : public QPushButton //继承QPushButton类
{
Q_OBJECT
public:
explicit MenuButton(QWidget *parent = 0);
QMenu *getmenu();
private slots:
void PushMenu();
private:
QMenu *menu;
};
#endif // MENUBUTTON_H
实现函数
#include "menubutton.h"
#include <QMenu>
MenuButton::MenuButton(QWidget *parent):
QPushButton(parent)
{
menu = new QMenu(this);
connect(this,SIGNAL(clicked()),this,SLOT(PushMenu()));
}
QMenu *MenuButton::getmenu()
{
return menu;
}
void MenuButton::PushMenu()
{
QPoint pos;
int y = pos.y();
pos.setY(y+this->geometry().height());
menu->exec(this->mapToGlobal(pos));
}
```cpp
/* AboutpushButton按钮下的菜单 */
QAction *AboutAct;
QAction *SettingAct;
QAction文字和图片的队列
/* 显示菜单 */
QMenu * menu = ui->menuPushButton->getmenu();
SettingAct = new QAction(QIcon(":/image/setting.png"), tr("&设置"), this);
AboutAct = new QAction(QIcon(":/image/setting.png"), tr("&关于我们"), this);
menu->addAction(SettingAct);
menu->addAction(AboutAct);