本文在https://blog.youkuaiyun.com/zhushentian/article/details/82014760基础上绘制下拉菜单,由于该链接代码没有sheetstlye样式,本文重新给定了样式
菜单效果
void RPMSystem::AddSetUpMenu()
{
m_menu = new QMenu(this);
m_menu->setObjectName("menu_1");
m_menu->setStyleSheet("QMenu{border: 1px solid rgb(0,142,211);}"
"QMenu::item{margin:0px;border:2px solid none;}"
"QMenu::item:selected{background-color:rgb(0,142,211);");
QStringList menu_name;
menu_name << "serversite" << "changepassword" << "about";
QStringList menu_text;
menu_text << QStringLiteral("网络设置") << QStringLiteral("密码修改") << QStringLiteral("About RPMS...");
for (int i = 0; i < 3;i++)
{
QMenuWidget *mw = new QMenuWidget(this);
QString str = "menu_widget_" + menu_name.at(i);
mw->setObjectName(str);
mw->setStyleSheet("QWidget#menu_widget_serversite,#menu_widget_changepassword,#menu_widget_about{"
"background-color:none;border: 0px solid;}"
"QWidget#menu_widget_serversite[hover=true],#menu_widget_changepassword[hover=true],"
"#menu_widget_about[hover=true]{background-color:rgb(0,142,211);}");
mw->setFixedSize(140, 35);
QWidget *icon = new QWidget(mw);
icon->setObjectName("menu_icon_"+menu_name.at(i));
icon->setStyleSheet("QWidget#menu_icon_serversite[hover=false]{border-image:url(:/resource/mainimage/main_set_net.png);}"
"QWidget#menu_icon_serversite[hover=true]{border-image:url(:/resource/mainimage/main_set_net_white.png);}"
"QWidget#menu_icon_changepassword[hover=false] {border-image:url(:/resource/mainimage/main_set_password.png);}"
"QWidget#menu_icon_changepassword[hover=true] {border-image:url(:/resource/mainimage/main_set_password_white.png);}"
"QWidget#menu_icon_about[hover=false] {border-image:url(:/resource/mainimage/main_set_about.png);}"
"QWidget#menu_icon_about[hover=true] {border-image:url(:/resource/mainimage/main_set_about_white.png);}");
icon->setFixedSize(25, 25);
QLabel *text = new QLabel(mw);
text->setObjectName("menu_text_"+menu_name.at(i));
text->setText(menu_text.at(i));
text->setStyleSheet("QLabel{font-family:'Arial';font-size:14px;color:rgb(0,0,0);qproperty-alignment:'AlignVCenter';}"
"QLabel[hover=true]{color:rgb(255,255,255);}");
QWidget* indicator = NULL;
if(menu_name.at(i) == "about")
{
indicator = new QWidget(mw);
indicator->setObjectName("menu_sub_"+menu_name.at(i));
indicator->setFixedSize(8, 12);
indicator->setStyleSheet("QWidget#menu_sub_about{"
"border-image:url(:/resource/mainimage/right_normal.png);}"
"QWidget#menu_sub_about[hover=true]{"
"border-image:url(:/resource/mainimage/right.png);}");
}
mw->SetIconWidget(icon);
mw->SetTextWidget(text);
mw->SetSubMenuIndicatorWidget(indicator);
mw->initWidgets();
QWidgetAction *wa = new QWidgetAction(m_menu);
wa->setObjectName("action_" + menu_name.at(i));
wa->setText(menu_name.at(i));
wa->setDefaultWidget(mw);
//mw->SetAction(wa);
m_widget_acts.append(wa);
}
QAction *act3 = new QAction(this);
act3->setText(QStringLiteral("测试"));
QMenu *submenu = new QMenu(this);
submenu->addAction(act3);
m_widget_acts.at(2)->setMenu(submenu);
m_menu->addActions(m_widget_acts);
m_menu->installEventFilter(this);
m_pSetButton->setMenu(m_menu);
// m_pSetButton->show();
connect(m_menu, &QMenu::triggered, this, &RPMSystem::onMenuTriggered);
}