设置菜单方法:
void QPushButton::setMenu(QMenu *menu)
将弹出式菜单与按钮关联起来。这将把按钮变成一个菜单按钮,在某些样式中,它会在按钮文本的右边产生一个小三角形。菜单的所有权不会转移到按钮。
QSS去除三角形:QPushButton::menu-indicator{image:none;width:0px;}
QPushButton* menubtn = new QPushButton("按钮");
QMenu *cmenu = new QMenu(menubtn);//新建Menu
menubtn->setMenu(cmenu);
cmenu->setFixedWidth(150);
cmenu->setAttribute(Qt::WA_StyledBackground, true);//可以设置背景颜色
cmenu->setStyleSheet("QMenu{ \
background-color: #ABABAB; \
border: 1px solid black;\
} \
QMenu::item { \
background-color: transparent; \
} \
QMenu::item:selected { \
background-color: #654321;} ");
//新建三个右键菜单,分别为Menu1,Menu2,Menu3
QAction *action1 = cmenu->addAction("Menu 1");
QAction *action2 = cmenu->addAction("Menu 2");
QAction *action3 = cmenu->addAction("Menu 3");
//连接这三个菜单项触发动作和对应的槽函数
connect(action1, &QAction::triggered, this, [](bool state){
});
connect(action2, &QAction::triggered, this, [](bool state){
});
connect(action3, &QAction::triggered, this, [](bool state){
});