Nothing to do, found cool music box tray pop-up menu has a personality, so it is written according to the original, material and so on from the Internet, for everyone to learn, mainly its first item for a widget, and qt menu items for qaction, And this qaction does not inherit from Qwidget, and later found that there is a qwidgetaction, here can add their own widgets, the key to implement a createwidget () virtual function.
650) this.width=650; "src=" http://s3.51cto.com/wyfs02/M00/55/46/wKiom1SJXx-B4w77AABUFRB_sAM546.jpg "title=" effect as above " alt= "Wkiom1sjxx-b4w77aabufrb_sam546.jpg"/>
Menu Initialization Void qmenutest::contentmenuinit () {m_pcontentmenu = new qmenu (this); Q_assert (M_pcontentmenu); Subcontrolaction* pcontrolaction = new subcontrolaction (m_pContentMenu); m_pContentMenu- >addaction (pcontrolaction); M_pcontentmenu->addseparator (); Qmenu* pmodelmenu = new qmenu (M_pcontentmenu);p modelmenu->addaction (tr ("single play")); Pmodelmenu->addaction (TR ("single Loop"));p modelmenu->addaction (tr ("Sequential Play"));p modelmenu->addaction (tr ("Loop Play")) ;p modelmenu->addaction (TR ("Random Play"));p Modelmenu->seticon (Qicon (":/res/resources/model.png");p modelmenu- >settitle (TR ("Play Mode")); M_pcontentmenu->addmenu (Pmodelmenu); M_pcontentmenu->addaction (tr ("Show Desktop lyrics"); m_ Pcontentmenu->addaction (tr ("Show Music Tree")), M_pcontentmenu->addaction (Qicon (tr (":/res/resources/setting.png")), TR ("set")), M_pcontentmenu->addaction (Qicon (tr (":/res/resources/exit.png")), tr ("Exit")); Subcontrolaction inherits Qwidgetaction, the following is the. H file #ifndef subcontrolaction_h#define&nbSp subcontrolaction_h#include <qwidgetaction> #include "MenuSubControl.h" class Subcontrolaction : public qwidgetaction{q_objectpublic:subcontrolaction (QObject *parent); ~ Subcontrolaction ();p rotected:qwidget* createwidget (qwidget* parent);p rivate:menusubcontrol* m_ Psubcontrol;}; #endif // subcontrolaction_h
Subcontrolaction. Cpp#include "StdAfx.h" #include "SubControlAction.h" Subcontrolaction::subcontrolaction (qobject *parent): qwidgetaction (parent) {}subcontrolaction::~subcontrolaction () {}qwidget* Subcontrolaction::createwidget ( qwidget* parent) {M_psubcontrol = new Menusubcontrol (parent); Q_assert (M_psubcontrol); return M_psubcontrol;} #ifndef menusubcontrol_h#define menusubcontrol_h#include <QWidget> #include "ui_menusubcontrol.h" class Menusubcontrol:public Qwidget{q_objectpublic:menusubcontrol (Qwidget *parent = 0); ~menusubcontrol ();p Rivate:ui:: Menusubcontrol UI;}; #endif//Menusubcontrol_h
#include "StdAfx.h"
#include "MenuSubControl.h"
Menusubcontrol::menusubcontrol (Qwidget *parent)
: Qwidget (parent)
{
UI.SETUPUI (this);
QFile f (":/qss/subcontrol_qss");
F.open (qiodevice::readonly);
Setstylesheet (F.readall ());
}
Menusubcontrol::~menusubcontrol ()
{
}
Ui
650) this.width=650; "src=" Http://s3.51cto.com/wyfs02/M01/55/46/wKiom1SJYbzTNf3IAABzNUnzYcQ065.jpg "title=" Qq20141211171929.png "alt=" Wkiom1sjybztnf3iaabznunzycq065.jpg "/>
Style sheet
Qmenu {
Background-color:white;
border:1px solid Gray;
Border-style:outset;
border-radius:2px;
padding:2px;
Color:black;
}
Qmenu::item {
padding:2px 25px 2px 20px;
border:1px solid Transparent; /* Reserve space for selection border */
}
qmenu::item:selected {
Background:rgba (85, 85, 255, 150);
}
qmenu::icon:checked {/* appearance of a ' checked ' icon */
Background:gray;
border:1px inset Gray;
Position:absolute;
top:1px;
right:1px;
bottom:1px;
left:1px;
}
Qmenu::separator {
height:1px;
Background:gray;
margin-left:10px;
margin-right:5px;
}
Qmenu::indicator {
width:13px;
height:13px;
}
qpushbutton#btn_switch{
Background-color:white;
Border-image:url (:/res/resources/play.png);
min-height:32px;
min-width:32px;
}
qpushbutton#btn_switch:pressed{
Border-image:url (:/res/resources/pause.png);
}
qpushbutton#btn_up{
Background-color:white;
Border-image:url (:/res/resources/step_forward.png);
height:24px;
width:24px;
}
qpushbutton#btn_next{
Background-color:white;
Border-image:url (:/res/resources/step_next.png);
height:24px;
width:24px;
}
A personalized menu written with qt imitation cool music Box