对按钮设置菜单只需使用setMenu函数即可。
实现代码:
m_pAddMenuPB = new QPushButton;
m_pAddMenu = new QMenu;
QAction *upload = new QAction(QIcon(":/map/upload.png"),"上传文件",this);
QAction *createDir = new QAction(QIcon(":/map/createdir.png"),"创建文件夹",this);
m_pAddMenu->addAction(upload);
m_pAddMenu->addAction(createDir);
m_pAddMenuPB->setMenu(m_pAddMenu);
m_pAddMenuPB->setFixedSize(40,40);
m_pFlushFilePB = new QPushButton;
m_pFlushFilePB->setFixedSize(40,40);
QAction是一个类,它的功能是等待指令,执行工作。那么这个指令怎么来呢?比如菜单项、工具栏内按钮,用户在点击这些选项或按钮时,Qt得到反馈,执行指定功能。
QAction函数原型为:
explicit QAction(QObject *parent = nullptr);
explicit QAction(const QString &text, QObject *parent = nullptr);
explicit QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);
取消菜单右边的小箭头:
mybtn->setStyleSheet("QPushButton::menu-indicator{image:none}");
连接槽函数:
connect(upload, &QAction::triggered, this, &Book::uploadFile);
connect(createDir,&QAction::triggered, this, &Book::createDir);
附上一段QMenu QSS代码:
QMenu{
color:#386487;
background-color:#DEF0FE;
margin:2px;
}
QMenu::item{
padding:3px 20px 3px 20px;
}
QMenu::indicator{
width:13px;
height:13px;
}
QMenu::item:selected{
color:#386487;
border:0px solid #C0DCF2;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #DEF0FE,stop:1 #C0DEF6);
}
QMenu::separator{
height:1px;
background:#C0DCF2;
}